Maison  >  Article  >  développement back-end  >  Comment exécuter un script esclave de manière asynchrone en Python à l'aide d'un appel de processus non bloquant ?

Comment exécuter un script esclave de manière asynchrone en Python à l'aide d'un appel de processus non bloquant ?

DDD
DDDoriginal
2024-10-19 13:47:29633parcourir

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

subprocess.call non bloquant

Dans ce scénario, vous avez l'intention d'invoquer un script esclave (slave.py) à partir d'un script parent (main.py) de manière asynchrone . Plus précisément, vous souhaitez que slave.py s'exécute indépendamment de main.py après avoir reçu des arguments de main.py lors de son exécution initiale.

Pour obtenir un comportement non bloquant, vous devez utiliser subprocess.Popen au lieu de subprocess.call . La principale différence est que subprocess.call attend la fin de la commande avant de continuer, contrairement à subprocess.Popen.

Voici un exemple utilisant 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)

Maintenant, main .py peut continuer son exécution pendant que slave.py s'exécute indépendamment.

Remarques supplémentaires :

  • N'utilisez pas de liste pour transmettre les arguments si vous' Vous utilisez shell=True.
  • Vous pouvez également exploiter asyncio pour le parallélisme basé sur la coroutine. Voir l'exemple fourni dans la réponse originale pour plus de détails.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn