Exécution asynchrone de commandes Shell 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
Utiliser 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 du sous-processus.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 une 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.
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!