Heim >Backend-Entwicklung >Python-Tutorial >Warum wird mein Python-Skript nicht sofort gedruckt?

Warum wird mein Python-Skript nicht sofort gedruckt?

DDD
DDDOriginal
2024-11-11 08:01:031047Durchsuche

Why is My Python Script Not Printing Immediately?

Ausgabepufferung in Python

In Python puffert die Druckfunktion standardmäßig die Ausgabe, um die Leistung zu verbessern. Dadurch wird verhindert, dass das Terminal die Ausgabe sofort anzeigt, was bei der Überwachung des Fortschritts eines Skripts problematisch sein kann.

Warum es puffert

Das Terminal ist ein separates Programm, das kommuniziert mit Ihrem Python-Skript. Durch die Pufferung wird der Aufwand für das Senden von Text an das Terminal reduziert, indem dieser intern gespeichert wird, bis eine bestimmte Menge angesammelt wurde oder ein Zeilenumbruchzeichen gefunden wird.

Behebung des Problems

Sofortiger Einzeldruck

Um sofort zu drucken, müssen Sie den Ausgabepuffer explizit leeren. Verwenden Sie in Python 3.x das Flush-Argument in der Druckfunktion:

for step in steps:
    run_simulation(step)
    print('.', end=' ', flush=True)

In Python 2.x rufen Sie die .flush-Methode im Standardausgabestream auf:

for step in steps:
    run_simulation(step)
    print '.',
    sys.stdout.flush()

Pufferung deaktivieren

Um die Pufferung der Ausgabezeile vollständig zu deaktivieren, können Sie den Puffer ändern Größe:

import sys
sys.stdout.buffer.write(bytearray('Hello', 'utf-8'))  # Use bytearray for Python 3.x
sys.stdout.buffer.flush()  # Manually flush the buffer as needed

Alternativ können Sie den ungepufferten Wrapper verwenden:

import sys
with open(sys.stdout.fileno(), mode='w', buffering=0) as f:
    # Writes directly to the terminal without buffering
    f.write('Hello')

Das obige ist der detaillierte Inhalt vonWarum wird mein Python-Skript nicht sofort gedruckt?. 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