В прошлом я всегда использовал для этого модуль subprocess
. Он предоставляет хороший API для связи с подпроцессами.
Вы можете использовать call(*popenargs, **kwargs)
для блокировки их выполнения, и я считаю, что использование класса Popen
может обрабатывать асинхронное выполнение.
Проверьте документы для получения дополнительной информации.
Что касается использования os.fork
против pty.fork
, то оба сильно зависят от платформы, и ни один из них не будет работать (или, по крайней мере, проверен) с окнами. Модуль pty
кажется более ограниченным из-за чтения документов. Основным отличием является аспект псевдотерминала. Поэтому, если вы не хотите создавать свой код таким образом, чтобы можно было использовать модуль subprocess
, я бы, вероятно, выбрал os.fork
вместо pty.fork
.