Python はデフォルトで出力をバッファリングし、ターミナルなどの他のプログラムに個別に送信するのではなく、一度にすべて送信することでパフォーマンスを向上させます。改行がない場合、通常、print ステートメントは一度に 1 行でバッファリングされるため、意図したテキストの表示に遅れが生じます。
単一の Print ステートメントの場合:
for _ in range(10): print('.', end=' ', flush=True) time.sleep(.2) # or other time-consuming work
for _ in range(10): print '.', sys.stdout.flush() time.sleep(.2) # or other time-consuming work
複数印刷の場合ステートメント:
各印刷を個別にフラッシュする代わりに、行バッファリングを完全に無効にすることができます。考えられる解決策は次のとおりです。
環境変数 PYTHONUNBUFFERED を True に設定します。
export PYTHONUNBUFFERED=1
fcntl モジュールを使用してファイル記述子を操作します。
import fcntl stdout_fileno = sys.stdout.fileno() fcntl.fcntl(stdout_fileno, fcntl.F_SETFL, os.O_NONBLOCK)
これらの手法を実装すると、出力を確実に行うことができます。ターミナルに即座に表示され、スクリプトの実行中により有益でインタラクティブなエクスペリエンスが提供されます。
以上がPython 出力が遅延するのはなぜですか? どうすればそれをリアルタイムに表示できるでしょうか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。