デフォルトでは、Python の print()
関数はその出力を sys.stdout
に送信します 、そのドキュメントはこれを指定します:
インタラクティブな場合、stdout
と stderr
ストリームは行バッファリングされます。それ以外の場合は、通常のテキスト ファイルのようにブロック バッファリングされます。この値は -u
でオーバーライドできます コマンドライン オプション
これらのドキュメントは、stdbuf
のような一般的な環境の影響の余地を残していないことに注意してください。 コマンド、sys.stdout
のバッファリング モードで :-u
の場合はバッファリングされません オプションが使用されました (または、同等に、環境変数 PYTHONUNBUFFERED
の場合) それ以外の場合は、インタラクティブな場合はライン バッファリングされ、非インタラクティブな場合はブロック バッファリングされます。
stdbuf
のドキュメントのように、プログラムは独自のバッファリングを制御できます。 承認:
注:COMMAND が標準ストリームのバッファリングを調整する場合 (たとえば、「tee」は調整します)、「stdbuf」によって変更された対応する設定を上書きします。また、一部のフィルター (「dd」や「cat」など) は I/O にストリームを使用しないため、「stdbuf」設定の影響を受けません。
Python はバッファリングの詳細を明示的に指定しているため、実際には積極的にそのバッファリングを管理していると期待するのが合理的であり、したがって stdbuf
の影響は疑わしいものです。 .