好的,所以我已经看到了十几个这样的线程,但是没有一个给出完整的答案,而且到目前为止我尝试的一切都对我不起作用。
1)不断输出一些数据并刷新它的脚本:
import time
import sys
if __name__ == '__main__':
for i in range(5):
print i,
sys.stdout.flush()
time.sleep(1)
2)使用 Popen 调用第一个脚本的脚本应该一个一个地打印数字,但由于某种原因没有,并且一次打印它们:
import sys
import subprocess
if __name__ == '__main__':
process = subprocess.Popen(['python', 'flush.py'], stdout = subprocess.PIPE )
for line in iter(process.stdout.readline, ''):
print line,
sys.stdout.flush()
我有点困惑的第一件事是在第一个脚本中,如果你删除刷新,它会在一行中返回输出 O_O ...我很确定这是因为 time.sleep 但仍然有点预期它会像一个标准输出不断返回值 0,1,2,3,4 但不是全部一起,当然 flush 解决了它,但很奇怪,至少对我来说......
主要问题: 第二个脚本是否没有一一返回数字,而是一次返回所有输出......我需要的是看到数字一一弹出......
我在某处读到它不会返回 Popen 等待关闭管道的 EOF,这就是它运行到最后的原因.....
那么接下来我该怎么做或尝试呢? 提前致谢。