Asynchrones Ausführen externer Befehle aus Python
Das asynchrone Ausführen externer Befehle ist eine häufige Anforderung in Skriptszenarien. In Python kann dies durch verschiedene Ansätze erreicht werden.
Eine Option ist die Verwendung von os.system, das die nicht blockierende Ausführung von Befehlen durch Anhängen eines kaufmännischen Und-Zeichens (&) am Ende ermöglicht. Diese Methode gilt jedoch als veraltet und wird aufgrund möglicher Probleme mit der Shell-Interaktion nicht empfohlen.
Ein optimalerer Ansatz ist die Verwendung von subprocess.Popen, das eine umfassendere und robustere API für die Verwaltung externer Prozesse bietet. Mit Popen können Befehle asynchron gestartet werden, sodass das Python-Skript weiterhin ausgeführt werden kann, während der externe Befehl im Hintergrund ausgeführt wird.
from subprocess import Popen
p = Popen(['watch', 'ls']) # something long running
# ... do other stuff while subprocess is running
p.terminate()
In diesem Beispiel wird die Popen-Instanz erstellt und der Befehl und seine Argumente übergeben. Das Python-Skript kann dann mit anderen Aufgaben fortfahren, während der externe Befehl asynchron ausgeführt wird. Später kann der Status der Popen-Instanz abgefragt werden (z. B. mit poll()), mit ihr kommuniziert werden (z. B. über communi()) oder beendet werden.
Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.
Copyright© 2022 湘ICP备2022001581号-3