3

プログラムは、一度に 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)
4

1 に答える 1

5

Instead of

#!/usr/bin/env python

use

#!/usr/bin/env python -u
于 2013-06-02T17:43:05.197 に答える