Streaming-Ausgabe von subprocess.communicate()
Die Funktion subprocess.communicate() von Python ist nützlich, um die Standardausgabe eines Prozesses zu erfassen. Normalerweise wird jedoch die gesamte Ausgabe auf einmal zurückgegeben. Dies kann für Prozesse, die über einen längeren Zeitraum Output erzeugen, unpraktisch sein. Um dieses Problem anzugehen, untersuchen wir eine Technik zum Drucken jeder Zeile der Standardausgabe des Prozesses im Streaming-Modus.
Lösung
Durch den Einsatz eines iterativen Mechanismus können wir Zeilen abrufen von stdout, sobald sie werden verfügbar:
from subprocess import Popen, PIPE # Launch a process with buffering set to 1 byte p = Popen(["cmd", "arg1"], stdout=PIPE, bufsize=1) # Iterate over the stdout lines as they become available with p.stdout: for line in iter(p.stdout.readline, b''): print(line, end='') # Wait for the process to terminate p.wait()
Erklärung
Zusätzliche Hinweise
Das obige ist der detaillierte Inhalt vonWie kann ich die Ausgabe eines Unterprozesses Zeile für Zeile in Python streamen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!