Я бы хотел использовать модуль подпроцесса следующим образом:
- создать новый процесс, выполнение которого потенциально может занять много времени.
- захватить
stdout
(илиstderr
, или потенциально оба, вместе или по отдельности) - Обработка данных из подпроцесса по мере их поступления, возможно, запуск событий в каждой полученной строке (скажем, в wxPython) или просто их распечатка на данный момент.
Я создал процессы с помощью Popen, но если я использую connect (), данные приходят ко мне сразу после завершения процесса.
Если я создаю отдельный поток, который блокирует readline()
из myprocess.stdout
(с использованием stdout = subprocess.PIPE
), я также не получаю никаких строк с этим методом, пока процесс не завершится. (независимо от того, что я установил как bufsize)
Есть ли способ справиться с этим, который не был бы ужасен и хорошо работал на нескольких платформах?
asyncio
) и вот многопоточное решение (teed_call()
). - person jfs   schedule 17.10.2014