异步stdin在Python中读取

时间:2013-06-02 17:39:03

标签: python

程序一次连续打印到标准输出一行。

我试图在输入时一次读取和处理一行,而不必等待程序完成。

例如,下面的writeOutput.py一次写一行到stdout(在1到3秒之间的每一行之间等待)。

调用./writeOutput.py | ./processEachLine.py需要writeOutput.py才能在processEachLine.py开始处理第一行之前完成。

有没有在python中实现这一点?即使在python程序中直接调用writeOutput.py而不是使用管道?

任何帮助都将受到高度赞赏。

writeOutput.py

#!/usr/bin/env python
import random
import time

i = 0
while i < 5:  
    n = int(1 + (random.random()*10) % 3)
    i += 1
    time.sleep(n)
    print(str(n) + " test")  

processEachLine.py

#!/usr/bin/env python    
import sys

while 1:
    line = sys.stdin.readline()
    if not line:
      break
    print(">>" + line)

1 个答案:

答案 0 :(得分:3)

而不是

#!/usr/bin/env python

使用

#!/usr/bin/env python -u