37,738
社区成员
发帖
与我相关
我的任务
分享
import subprocess
subp=subprocess.Popen('python /tmp/test.py',shell=True,stdout=subprocess.PIPE)
while subp.returncode=None:
print subp.returncode,subp.stdout.readline()
print subp.returncode
#/tmp/test.py
for i in range(1,10):
print i
import subprocess
subp=subprocess.Popen('python -u /tmp/test.py',shell=True,stdout=subprocess.PIPE)
c=subp.stdout.readline()
while c:
print c
c=subp.stdout.readline()
subp.wait()
print subp.returncode
下面的实现更严谨一些吧:
import subprocess
subp=subprocess.Popen('python -u /tmp/test.py',shell=True,stdout=subprocess.PIPE)
while subp.poll()==None:
print stdout.readline()
print subp.returncode
import sys
import time
for i in range(1,10):
print i
sys.stdout.flush()
time.sleep(1)
import subprocess
subp=subprocess.Popen('python test.py',shell=True,stdout=subprocess.PIPE)
c=subp.stdout.readline()
while c:
print c
c=subp.stdout.readline()
print subp.returncode
这样,你观察很明显,如果你将sys.stdout.flush(),删除,你会发现都是最后一刻才输出,因为print时代缓冲的。