Heim > Backend-Entwicklung > Python-Tutorial > Wie erzwinge ich eine sofortige Terminalausgabe in Python?

Wie erzwinge ich eine sofortige Terminalausgabe in Python?

Mary-Kate Olsen
Freigeben: 2024-11-13 12:44:02
Original
215 Leute haben es durchsucht

How to Force Immediate Terminal Output in Python?

Persistente Terminalausgabe mit Python

In Python gibt es ein Problem, bei dem Druckausgaben möglicherweise nicht sofort im Terminal angezeigt werden, wenn keine vorhanden sind Newline vorhanden. Dies liegt an der Ausgabepufferung, bei der die Ausgabe vorübergehend gespeichert wird, um die Leistung zu verbessern.

Was passiert?

Standardmäßig unterteilt das Terminal die Ausgabe in Zeilen. Wenn eine Zeile ohne ein Zeilenumbruchzeichen endet, bleibt die Ausgabe in einem Puffer, bis sie abgeschlossen ist. Wenn nach einer Druckanweisung kein Zeilenumbruch erfolgt, wird die Ausgabe daher erst angezeigt, wenn die Schleife oder das Programm beendet wird.

Behebung des Problems

Für Einzelne Ausdrucke:

In Python 3 akzeptiert die Druckfunktion ein Flush-Argument. Wenn Sie es auf True setzen, wird die Ausgabe sofort angezeigt:

import time

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

In Python 2, wo print eine Anweisung ist, verwenden Sie die Flush-Methode des Standardausgabestreams (sys.stdout):

import time

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

Für mehrere Ausdrucke:

Anstatt nach jedem Druck zu leeren, können Sie die Pufferung der Ausgabezeilen vollständig deaktivieren, um mehrere Ausdrucke effizienter zu verarbeiten. Es stehen mehrere Lösungen zur Verfügung:

  • Verwenden Sie print(file=sys.stderr), um die Ausgabe in die Standardfehlerausgabe umzuleiten, die nicht gepuffert wird.
  • Verwenden Sie sys.stdout.writelines mit einer Liste aller Druckanweisungen, um sie auf einmal auszugeben.
  • Installieren Sie das ungepufferte Paket und verwenden Sie seine Unbuffered-Klasse, um einen ungepufferten Stdout-Stream zu erstellen.

Das obige ist der detaillierte Inhalt vonWie erzwinge ich eine sofortige Terminalausgabe in Python?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage