Exécution de commandes Shell asynchrone en Python : exploration d'approches alternatives
L'exécution de commandes externes de manière asynchrone à partir de scripts Python est une technique précieuse qui permet l'exécution continue de scripts tandis que les commandes externes accomplissent leurs tâches. Cet article explore les méthodes appropriées pour obtenir ce comportement asynchrone, en se concentrant sur l'utilisation de os.system() et subprocess.Popen.
os.system() et le symbole esperluette
L'utilisation de os.system() avec une esperluette (&) à la fin d'une commande peut en effet créer un processus détaché qui s'exécute de manière asynchrone. Cependant, cette méthode a des limites et n'est pas considérée comme l'approche recommandée pour l'exécution asynchrone.
subprocess.Popen - Une alternative supérieure
Pour une exécution de commande asynchrone fiable, sous-processus. Popen est le choix préféré. Il offre un large éventail de contrôles sur le processus enfant, vous permettant de :
• Create asynchronous processes with Popen() • Perform tasks concurrently while the child process is active • Terminate the process with terminate() • Query its running status with poll() • Communicate with it using stdin and stdout
Exemple d'utilisation de subprocess.Popen
from subprocess import Popen p = Popen(['watch', 'ls']) # Replace with your command # Other code can run here while the command is executing p.terminate() # Stop the process when necessary
Conclusion
Bien que os.system() puisse offrir un niveau de base d'exécution asynchrone, subprocess.Popen fournit un solution plus robuste et flexible pour contrôler et interagir avec les processus enfants. Sa polyvalence et sa facilité d'utilisation en font la méthode recommandée pour l'exécution de commandes shell asynchrones en Python.
Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.
Copyright© 2022 湘ICP备2022001581号-3