Вход в стандартный вывод и файл с использованием Popen в Python - PullRequest
0 голосов
/ 15 октября 2018

Я использую 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)

Моя проблема в том, чточтение выходных блоков дочернего процесса до его завершения, и только после этого читается результат второго процесса вместо альтернативного чтения из одного, а затем из другого.Как мне это исправить?

Спасибо!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...