Python: Как читать стандартный вывод подпроцесса неблокирующим способом
Я пытаюсь сделать простой скрипт на Python, который запускает подпроцесс и отслеживает его стандартный вывод. Вот фрагмент кода:
process = subprocess.Popen([path_to_exe, os.path.join(temp_dir,temp_file)], stdout=subprocess.PIPE)
while True:
output=process.stdout.readline()
print "test"
Проблема в том, что скрипт висит наoutput=process.stdout.readline()
и что линияprint "test"
выполняется только после завершения подпроцесса.
Есть ли способ прочитать стандартный вывод и распечатать его, не дожидаясь завершения подпроцесса?
Подпроцесс, который я запускаю, является двоичным файлом Windows, для которого у меня нет исходного кода.
Я нашел несколько похожих вопросов, но ответы применимы только в Linux или в случае, если у меня есть источник суперпроцесса, который я запускаю.