Verwendung eines Subprozessmoduls mit Timeout-Funktionalität
Die Notwendigkeit, dass ein Subprozess seine Ausführung innerhalb eines vordefinierten Zeitrahmens abschließen muss, entsteht häufig in der Programmierung. Während das Unterprozessmodul einen robusten Mechanismus zum Ausführen von Befehlen bietet, fehlen ihm von Natur aus Timeout-Funktionen.
Um diese Einschränkung zu beheben, stellt Python 3.3 und höher die Funktion check_output innerhalb des Unterprozessmoduls bereit. Diese Funktion ruft nicht nur die Standarddaten vom Befehl ab, sondern löst auch eine Ausnahme aus, wenn der Prozess das angegebene Timeout überschreitet.
from subprocess import STDOUT, check_output # Set the timeout in seconds timeout = 5 try: # Execute the command with the specified timeout output = check_output(cmd, stderr=STDOUT, timeout=timeout) except CalledProcessError as e: # Handle the error if the process fails with a non-zero exit status pass # Process the merged stdout/stderr data contained in the output variable
In diesem Code bestimmt die Timeout-Variable die maximal zulässige Ausführungszeit für den Befehl. check_output stellt sicher, dass der Prozess beendet wird und die kombinierte stdout/stderr-Ausgabe innerhalb des angegebenen Zeitrahmens zurückgibt.
Alternativ bietet für Python 2.x-Benutzer der Subprocess32-Backport des Subprocess-Moduls die gleiche Funktionalität. Dieser Backport bietet eine Lösung, die check_output entspricht und eine zeitüberschreitungsbewusste Befehlsausführung unter Python 2.x ermöglicht.
Das obige ist der detaillierte Inhalt vonWie kann ich Unterprozessaufrufen in Python eine Zeitüberschreitung hinzufügen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!