Heim  >  Artikel  >  Backend-Entwicklung  >  Wie drucke ich die Ausgabe eines Unterprozesses in Echtzeit, während er ausgeführt wird?

Wie drucke ich die Ausgabe eines Unterprozesses in Echtzeit, während er ausgeführt wird?

Susan Sarandon
Susan SarandonOriginal
2024-10-31 21:48:28835Durchsuche

How to Print Subprocess Output in Real-Time While It's Running?

Unterprozessausgabe ständig drucken, während der Prozess ausgeführt wird

Problem

Bei Programmen, die mit dem Unterprozessmodul von Python gestartet werden, muss das Programm warten, bis die Ausführung des Unterprozesses abgeschlossen ist bevor auf die Ausgabe zugegriffen werden kann. Dies kann bei Prozessen mit langer Laufzeit unpraktisch sein, da dadurch verhindert wird, dass das Programm fortfährt, bis der Unterprozess abgeschlossen ist.

Lösung

Um das Drucken der Ausgabe des Unterprozesses in Echtzeit zu ermöglichen, wird über die Unterprozesse iteriert Der Ausgabestream kann verwendet werden. Dadurch kann das Programm Ausgabezeilen verarbeiten, sobald sie verfügbar sind.

Unten ist ein Beispiel, das diesen Ansatz demonstriert:

<code class="python">from __future__ import print_function  # Python 2.x compatibility

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)

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

Durch die Verwendung dieses iterativen Ansatzes kann das Programm verarbeiten Ausgabe des Unterprozesses Zeile für Zeile, sobald sie verfügbar ist, wodurch eine Ausgabeanzeige in Echtzeit ermöglicht wird, während der Unterprozess ausgeführt wird.

Das obige ist der detaillierte Inhalt vonWie drucke ich die Ausgabe eines Unterprozesses in Echtzeit, während er ausgeführt wird?. 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