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