Домашняя работа № 4 (10 p.)

Перед выполнением домашней работы вытяните и слейте изменения из моего оригинального репозитория

В этой домашней работе мы узнаем как использовать модуль threading для построения не блокирующего кода, а также познакомимся с модулем стандартной библиотеки cmd (Небольшое описание можно посмотреть здесь.

Для начала взглянем на файл turtle_shell.py, он позволяет запустить командный интерфейс для управления черепашкой, однако после ввода команды, перестает чиать ввод до тех пор пока черепашка не выполнит команду. В качестве домашнего упражение в файле noblocking_turtle_shell.py вы должны реализовать командный интерфейс не блокирующийся после ввода команды.

Для этого:

  • (6 p.) Используя класс TurtleDeviceThread реализуйте в отдельном потоке обработку сообщений из очереди TurtleDeviceThread.queue, считайте что сообщения представлют из себя кортеж, где начальный элемент это имя action для TurtleDevice, а остальные элементы это аргументы для этого action.

  • (2 p.) В классе NoBlockingTurtleShell реализуйте обработку команды execute, аргументами которой будут имя и аргументы action для TurtleDevice, передавая эти аргументы в другой поток через очередь TurtleDeviceThread.queue.

  • (2 p.) В классе NoBlockingTurtleShell реализуйте обработку команды exit, в котором остановите поток обработки сообщений.