ホームページ >バックエンド開発 >Python チュートリアル >Pythonで即時ターミナル出力を強制する方法?

Pythonで即時ターミナル出力を強制する方法?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-11-13 12:44:02209ブラウズ

How to Force Immediate Terminal Output in Python?

Python による永続的なターミナル出力

Python では、何も存在しない場合、印刷出力がターミナルにすぐに表示されないという問題があります。改行が存在します。これは、パフォーマンスを向上させるために出力が一時的に保存される出力バッファリングが原因で発生します。

何が起こりますか?

デフォルトでは、ターミナルは出力を行に分割します。行が改行文字なしで終了する場合、出力は完了するまでバッファーに残ります。その結果、print ステートメントの後に改行がない場合、ループまたはプログラムが終了するまで出力は表示されません。

問題の解決

の場合単一の印刷:

Python 3 では、print 関数はフラッシュ引数を受け入れます。これを True に設定すると、出力がすぐに表示されます:

import time

for _ in range(10):
    print('.', end=' ', flush=True)
    time.sleep(.2)  # or other time-consuming work

Python 2 では、print がステートメントであり、標準出力ストリーム (sys.stdout) のフラッシュ メソッドを使用します:

import time

for _ in range(10):
    print '.',
    sys.stdout.flush()
    time.sleep(.2)  # or other time-consuming work

複数の印刷の場合:

各印刷後にフラッシュする代わりに、出力行バッファリングを完全に無効にして、複数の印刷をより効率的に処理できます。複数の解決策が利用可能です:

  • print(file=sys.stderr) を使用して、出力をバッファリングされない標準エラーにリダイレクトします。
  • リストで sys.stdout.writelines を使用します。すべての print ステートメントを実行して一度に出力します。
  • バッファなしパッケージをインストールし、その Unbuffered クラスを利用してバッファなし stdout ストリームを作成します。

以上がPythonで即時ターミナル出力を強制する方法?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。