Heim >Backend-Entwicklung >Python-Tutorial >Wie führe ich ein Slave-Skript asynchron in Python mit nicht blockierendem Prozessaufruf aus?

Wie führe ich ein Slave-Skript asynchron in Python mit nicht blockierendem Prozessaufruf aus?

DDD
DDDOriginal
2024-10-19 13:47:29750Durchsuche

How to Run a Slave Script Asynchronously in Python using Non-Blocking Process Invocation?

Nicht blockierender subprocess.call

In diesem Szenario möchten Sie ein Slave-Skript (slave.py) asynchron von einem übergeordneten Skript (main.py) aufrufen . Insbesondere möchten Sie, dass Slave.py unabhängig von Main.py ausgeführt wird, nachdem es bei seiner ersten Ausführung Argumente von Main.py erhalten hat.

Um nicht blockierendes Verhalten zu erreichen, sollten Sie subprocess.Popen anstelle von subprocess.call verwenden . Der Hauptunterschied besteht darin, dass subprocess.call auf den Abschluss des Befehls wartet, bevor er fortfährt, während subprocess.Popen dies nicht tut.

Hier ist ein Beispiel für die Verwendung von subprocess.Popen:

import subprocess

# Pass the arguments from main.py to slave.py
arguments = ['python', 'slave.py'] + sys.argv[1:]

# Launch slave.py as a non-blocking process
process = subprocess.Popen(arguments)

Jetzt main .py kann seine Ausführung fortsetzen, während Slave.py unabhängig ausgeführt wird.

Zusätzliche Hinweise:

  • Verwenden Sie keine Liste, um die Argumente zu übergeben, wenn Sie Verwenden Sie Shell=True.
  • Alternativ können Sie Asyncio für Coroutine-basierte Parallelität nutzen. Einzelheiten finden Sie im Beispiel in der Originalantwort.

Das obige ist der detaillierte Inhalt vonWie führe ich ein Slave-Skript asynchron in Python mit nicht blockierendem Prozessaufruf 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