我正在使用Popen运行python脚本,该脚本将递增的整数值输出到stdout。我正在尝试使用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)
我的问题是读取子进程的输出块直到完成为止,然后才读取第二个进程的输出,而不是交替地从一个子进程再从另一个子进程读取。我该如何解决?
谢谢!