ホームページ > バックエンド開発 > Python チュートリアル > 改行を入れないと印刷出力がターミナルにすぐに表示されないのはなぜですか?

改行を入れないと印刷出力がターミナルにすぐに表示されないのはなぜですか?

Linda Hamilton
リリース: 2024-11-11 19:33:03
オリジナル
474 人が閲覧しました

Why Doesn't Print Output Appear Immediately in the Terminal Without a Newline?

改行なしで印刷出力がターミナルにすぐに表示されないのはなぜですか?

Python のデフォルトの動作は出力をバッファリングすることです。つまり、テキストを端末に送信する前に一時スペースに保存します。これは、必要なシステム コールの数を減らしてパフォーマンスを向上させるために行われます。

問題

文字列の末尾に改行 (n) が含まれていない場合print ステートメントまたは関数呼び出しの場合、テキストはバッファーに保持されます。改行が発生した場合、またはバッファがいっぱいになった場合にのみ、テキストがフラッシュされてターミナルに表示されます。

Python 2.x と 3.x の違い

Python 2.x では、print ステートメントにはフラッシュ引数がありません。改行を追加せずにバッファをフラッシュするには、次の方法を使用できます:

import sys

for i in range(10):
    print '.',
    sys.stdout.flush()
ログイン後にコピー

Python 3.x では、print 関数にはフラッシュ キーワード引数が含まれています:

for i in range(10):
    print('.', end=' ', flush=True)
ログイン後にコピー

< ;h3>行バッファリングの無効化

改行の存在に関係なく即時印刷が必要なシナリオでは、行バッファリングを完全に無効にすることができます。これは、

  • sys.stdout.line_buffering = True (Python 2.x の場合)
  • print(flush=True) (Python 3.x の場合)
を使用して実現できます。

バッファリングを無効にすると、改行や明示的なフラッシュを必要とせずに、すべての print 呼び出しがターミナルに即座に表示されます。

以上が改行を入れないと印刷出力がターミナルにすぐに表示されないのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート