次のように、別のコマンドからパイプを介して入力を読み取ることができるpythonスクリプトを作成しています
batch_job | myparser
私のスクリプトは、独自の stdoutmyparser
の出力と書き込みを処理します。batch_job
私の問題は、出力をすぐに見たいことです (batch_job の出力は行ごとに処理されます) が、この悪名高い stdin バッファリング (おそらく 4KB、確認していません) がすべてを遅らせているようです。
私は次のことを試しました:
- を使用して標準入力を開く
os.fdopen(sys.stdin.fileno(), 'r', 0)
- 私のハッシュバンでの使用
-u
:#!/usr/bin/python -u
export PYTHONUNBUFFERED=1
スクリプトを呼び出す直前の設定- 読み取られた各行の後に出力をフラッシュします(問題が入力バッファリングではなく出力バッファリングに起因する場合に備えて)
私のpythonバージョンは2.4.3です-追加のプログラムやパッケージをアップグレードまたはインストールする可能性はありません。これらの遅延を解消するにはどうすればよいですか?