プログラムは、一度に 1 行ずつ連続して標準出力に出力します。
プログラムが完了するのを待たずに、この入力を一度に 1 行ずつ読み取って処理しようとしています。
例として、以下の writeOutput.py は、一度に 1 行ずつ stdout に書き込みます (各行の間で 1 ~ 3 秒待機します)。
呼び出し./writeOutput.py | ./processEachLine.py
には、processEachLine.py が最初の行の処理を開始できるようになる前に、writeOutput.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)