Python 中的异步 stdin 读取

tar*_*lvd 3 python

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

我试图一次读取并处理该输入的一行,而不必等待程序完成。

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

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

无论如何,有没有办法在Python中实现这一点?即使直接在 python 程序中调用 writeOutput.py 而不是使用管道?

任何帮助将不胜感激。

写输出.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")  
Run Code Online (Sandbox Code Playgroud)

处理每一行.py

#!/usr/bin/env python    
import sys

while 1:
    line = sys.stdin.readline()
    if not line:
      break
    print(">>" + line)
Run Code Online (Sandbox Code Playgroud)

use*_*lpa 5

代替

#!/usr/bin/env python
Run Code Online (Sandbox Code Playgroud)

使用

#!/usr/bin/env python -u
Run Code Online (Sandbox Code Playgroud)