Standardmäßig Pythons print()
Die Funktion leitet ihre Ausgabe an sys.stdout
, dessen Dokumentation dies spezifiziert:
Bei Interaktivität stdout
und stderr
Streams sind zeilengepuffert. Andernfalls werden sie wie normale Textdateien blockgepuffert. Sie können diesen Wert mit dem -u
überschreiben Befehlszeilenoption.
Beachten Sie gut, dass diese Dokumente keinen Platz für allgemeine Umwelteinflüsse lassen, wie z. B. den des stdbuf
Befehl, auf den Puffermodus von sys.stdout
:es ist ungepuffert, wenn -u
Option verwendet wurde (oder äquivalent, wenn die Umgebungsvariable PYTHONUNBUFFERED
gesetzt), ansonsten zeilengepuffert wenn interaktiv und blockgepuffert wenn nicht interaktiv.
Programme können ihre eigene Pufferung steuern, wie die Dokumentation von stdbuf
zeigt bestätigen:
HINWEIS:Wenn COMMAND die Pufferung seiner Standard-Streams anpasst (z. B. „tee“ tut dies), dann überschreibt dies die entsprechenden Einstellungen, die von „stdbuf“ geändert wurden. Außerdem verwenden einige Filter (wie 'dd' und 'cat' usw.) keine Streams für I/O und werden daher nicht von 'stdbuf'-Einstellungen beeinflusst.
Da Python explizit Pufferungsdetails spezifiziert, ist es vernünftig zu erwarten, dass es tatsächlich seine Pufferung sicher verwaltet und somit jegliche Auswirkung von stdbuf
in Frage stellt .