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