# Домашняя работа № 4 (10 p.) **Перед выполнением домашней работы вытяните и слейте изменения из моего оригинального репозитория** В этой домашней работе мы узнаем как использовать модуль `threading` для построения не блокирующего кода, а также познакомимся с модулем стандартной библиотеки `cmd` (Небольшое описание можно посмотреть [здесь](/cards/CLI/cmd.md). Для начала взглянем на файл `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`, в котором остановите поток обработки сообщений.