Heim  >  Artikel  >  Backend-Entwicklung  >  So führen Sie externe Befehle asynchron von Python aus aus

So führen Sie externe Befehle asynchron von Python aus aus

DDD
DDDOriginal
2024-10-22 20:46:26642Durchsuche

How to Execute External Commands Asynchronously from Python

Asynchrone Ausführung externer Befehle aus Python

Bei der Python-Skripterstellung ist es häufig erforderlich, externe Befehle aufzurufen, die längere Zeit in Anspruch nehmen können Zeit zum Abschluss. Um sicherzustellen, dass das Python-Skript während der Ausführung dieser Befehle nicht anhält, ist eine asynchrone Ausführung erwünscht. Frühere Versuche mit os.system() beinhalteten die Verwendung von &, um den Befehl vom Fluss des Skripts zu trennen, aber die Eignung dieses Ansatzes ist fraglich.

Eine effektivere Lösung ist die Funktion subprocess.Popen. Mit Popen können Sie einen externen Befehl starten, ohne die Ausführung des Python-Skripts zu blockieren. Betrachten Sie das folgende Beispiel:

from subprocess import Popen
p = Popen(['watch', 'ls']) # something long running
# ... do other stuff while subprocess is running
p.terminate()

Dieses Codefragment verwendet Popen, um einen Befehl mit langer Laufzeit zu initiieren (z. B. „watch ls“). Das Python-Skript kann dann mit seinen eigenen Aufgaben fortfahren, während der externe Befehl aktiv bleibt. Gegebenenfalls kann die Popen-Instanz mit der Methode „terminate()“ beendet werden.

Darüber hinaus bietet Popen zusätzliche Funktionen wie Statusabfrage, Senden von Eingaben über stdin und Warten auf Beendigung. Durch die Nutzung von subprocess.Popen können Sie die asynchrone externe Befehlsausführung nahtlos in Ihre Python-Skripte integrieren.

Das obige ist der detaillierte Inhalt vonSo führen Sie externe Befehle asynchron von Python aus aus. 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