Heim >Backend-Entwicklung >Python-Tutorial >Wie kann ich die Ausgabepufferung für sys.stdout in Python deaktivieren?

Wie kann ich die Ausgabepufferung für sys.stdout in Python deaktivieren?

Barbara Streisand
Barbara StreisandOriginal
2024-12-27 09:49:09943Durchsuche

How Can I Disable Output Buffering for sys.stdout in Python?

Deaktivieren der Ausgabepufferung im Python-Interpreter für sys.stdout

Pythons Interpreter aktiviert standardmäßig die Ausgabepufferung für sys.stdout, eine dateiähnliche Datei Objekt, das die Standardausgabe akzeptiert.

Deaktivieren Pufferungsmethoden:

Um die Ausgabepufferung zu deaktivieren, gibt es mehrere Ansätze:

  • Befehlszeilenschalter:
python -u [script.py]
  • Wrapper-Klasse für sys.stdout:
class Unbuffered(object):
    def __init__(self, stream):
        self.stream = stream
    def write(self, data):
        self.stream.write(data)
        self.stream.flush()
    def writelines(self, datas):
        self.stream.writelines(datas)
        self.stream.flush()
    def __getattr__(self, attr):
        return getattr(self.stream, attr)

import sys
sys.stdout = Unbuffered(sys.stdout)
  • PYTHONUNBUFFERED-Umgebungsvariable:

Diese Variable auf einen nicht leeren Wert setzen deaktiviert Pufferung:

export PYTHONUNBUFFERED=1
  • Ändern des sys.stdout-Dateideskriptors:

Diese Methode beinhaltet das Öffnen eines neuen Dateideskriptors ohne Pufferung:

import os
sys.stdout = os.fdopen(sys.stdout.fileno(), 'w', 0)

Darüber hinaus können, wie in der Frage erwähnt, globale Flags während der Ausführung programmgesteuert gesetzt werden. Es scheint jedoch kein explizites globales Flag zu geben, das die Ausgabepufferung deaktiviert.

Das obige ist der detaillierte Inhalt vonWie kann ich die Ausgabepufferung für sys.stdout in Python deaktivieren?. 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