Домашняя работа № 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
, в котором остановите поток обработки сообщений.