Я использую Popen для запуска сценариев Python, которые выводят растущее целочисленное значение в стандартный вывод.Я пытаюсь использовать Popen для одновременной печати значения в stdout и записи его в файл:
logfile_out = open('test.log','a')
p1 = subprocess.Popen("stub_proc.py",shell=True,stdout = subprocess.PIPE,stderr = subprocess.STDOUT)
p2 = subprocess.Popen("stub_proc.py",shell=True,stdout = subprocess.PIPE,stderr = subprocess.STDOUT)
proc_lst = [p1,p2]
while len(proc_lst) > 0:
for p in proc_lst:
for line in p.stdout:
sys.stdout.write(line.decode('UTF-8'))
logfile_out.write(line.decode('UTF-8'))
if not p.poll() is None:
proc_lst.remove(p)
time.sleep(5)
print ("finished!")
stub_proc - это просто следующий код:
print ("start")
for i in range(15):
print(i)
time.sleep(3)
print ('finish')
sys.exit(0)
Моя проблема в том, чточтение выходных блоков дочернего процесса до его завершения, и только после этого читается результат второго процесса вместо альтернативного чтения из одного, а затем из другого.Как мне это исправить?
Спасибо!