Вызов для лучшего способа или примеров кода скорее по теме, но это слишком долго, чтобы быть комментарием.
Есть три основных способа построения тех эмулятор терминала, как приложений:
- несколько процессов - то, как старый добрый Unix
cu
работал с fork
- несколько потоков - вариант из выше с использованием светового потока нитей процессов
- с использованием
select
системный вызов с мультиплексированным io.
Как правило, два первых метода считаются более простыми для кодирования одним потоком (или процессом) обработки восходящей связи, в то время как другой обрабатывает нисходящую. И третий, будучи хитрым, чтобы код, как правило, считается более эффективным
В Python поддерживает многопоточность, многопроцессорной и select
вызов, вы можете выбрать любой метод, с небольшим предпочтением многопоточности над многопроцессорной поскольку потоки легче, чем процессы и I не видят причины использовать процессы.
После всего моего мнения
Если если вы пишете модель для перезаписи его позже в более низком языке на уровне, я не предположить, что производительность не является ключевым вопросом, и мой совет будет использовать потоки Вот.
Зачем вам нужны два потока? Вы беспокоитесь о сообщениях с сервера при завершении предыдущей команды? Сервер заботится о том, что пользователь вводит, когда он находится в середине команды? Я не чувствую, что две задачи должны выполняться параллельно. – Eric
Чем я могу получать сообщения от серверов и пользовательских команд с консоли одновременно? – Dmitry
Вам нужно? Сервер когда-либо посылает то, что не отвечает команде? Не может ли он просто чередовать команду и ответ? т.е. 'while True: get_cmd(); send_to_server(); dispay_response() ' – Eric