Heim  >  Artikel  >  Backend-Entwicklung  >  Warum erscheint die Druckausgabe ohne Zeilenumbruch nicht sofort im Terminal?

Warum erscheint die Druckausgabe ohne Zeilenumbruch nicht sofort im Terminal?

Linda Hamilton
Linda HamiltonOriginal
2024-11-11 19:33:03417Durchsuche

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

Warum wird die Druckausgabe ohne Zeilenumbruch nicht sofort im Terminal angezeigt?

Das Standardverhalten von Python besteht darin, die Ausgabe zu puffern. Das bedeutet, dass Text in einem temporären Bereich gespeichert wird, bevor er an das Terminal gesendet wird. Dies geschieht, um die Leistung zu verbessern, indem die Anzahl der erforderlichen Systemaufrufe reduziert wird.

Das Problem

Wenn am Ende von a kein Zeilenumbruch (n) eingefügt ist Bei einer Druckanweisung oder einem Funktionsaufruf wird der Text im Puffer gehalten. Erst wenn ein Zeilenumbruch auftritt oder der Puffer voll ist, wird der Text geleert und im Terminal angezeigt.

Python 2.x und 3.x Unterschiede

In Python 2.x verfügt die print-Anweisung nicht über ein Flush-Argument. Um den Puffer zu leeren, ohne eine neue Zeile hinzuzufügen, kann der folgende Ansatz verwendet werden:

import sys

for i in range(10):
    print '.',
    sys.stdout.flush()

In Python 3.x enthält die Druckfunktion ein Flush-Schlüsselwortargument:

for i in range(10):
    print('.', end=' ', flush=True)

< ;h3>Zeilenpufferung deaktivieren

Für Szenarien, in denen ein sofortiges Drucken unabhängig vom Vorhandensein einer neuen Zeile gewünscht wird, kann die Zeilenpufferung vollständig deaktiviert werden. Dies kann erreicht werden mit:

  • sys.stdout.line_buffering = True für Python 2.x
  • print(flush=True) für Python 3.x

Durch Deaktivieren der Pufferung werden alle Druckaufrufe sofort im Terminal angezeigt, ohne dass ein Zeilenumbruch oder explizites Leeren erforderlich ist.

Das obige ist der detaillierte Inhalt vonWarum erscheint die Druckausgabe ohne Zeilenumbruch nicht sofort im Terminal?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn