Heim  >  Artikel  >  Backend-Entwicklung  >  Wie streame ich die Prozessausgabe in Echtzeit in Python?

Wie streame ich die Prozessausgabe in Echtzeit in Python?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2024-10-29 04:15:29558Durchsuche

How to Stream Process Output in Real-Time in Python?

Kontinuierliche Ausgabeanzeige während der Prozessausführung

In Python-Skripten verwenden wir häufig Unterprozesse, um externe Programme auszuführen. Obwohl dies eine leistungsstarke Funktion ist, kann es frustrierend sein, auf den Abschluss eines Prozesses zu warten, bevor die Ausgabe abgerufen wird. Um dieses Problem anzugehen, untersuchen wir eine Methode zum kontinuierlichen Streamen der Prozessausgabe während der Ausführung.

Traditionell verwenden wir subprocess.communicate(), um die gesamte Ausgabe eines Prozesses zu erfassen, sobald dieser abgeschlossen ist. Bei diesem Ansatz muss der Prozess jedoch vollständig abgeschlossen sein, bevor eine Ausgabe angezeigt werden kann.

Um eine kontinuierliche Ausgabe zu ermöglichen, können wir die Iter-Funktion in Verbindung mit fd.readline() nutzen. Dies ermöglicht es uns, den Stdout-Stream des Prozesses zu durchlaufen und Zeilen zu erfassen, sobald sie verfügbar werden:

<code class="python">import subprocess

def execute(cmd):
    popen = subprocess.Popen(cmd, stdout=subprocess.PIPE, universal_newlines=True)
    for stdout_line in iter(popen.stdout.readline, ""):
        yield stdout_line 
    popen.stdout.close()
    return_code = popen.wait()
    if return_code:
        raise subprocess.CalledProcessError(return_code, cmd)</code>

In dieser erweiterten Version geben wir jede Stdout-Zeile aus, sobald sie verfügbar wird. Dadurch kann das Skript die Ausgabe kontinuierlich anzeigen, während sie vom Prozess generiert wird.

Hier ist ein anschauliches Beispiel:

<code class="python">for path in execute(["locate", "a"]):
    print(path, end="")</code>

Mit diesem Ansatz können wir kontinuierlich die Pfade anzeigen, die zur Suchabfrage passen „a“, wenn sie vom Befehl „locate“ gefunden werden, und geben Echtzeit-Feedback über den Fortschritt des Prozesses.

Diese Technik ermöglicht eine kontinuierliche Ausgabeüberwachung und verbessert so die Interaktivität und Benutzererfahrung von Skripten externe Prozesse starten.

Das obige ist der detaillierte Inhalt vonWie streame ich die Prozessausgabe in Echtzeit in Python?. 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