Bonsoir.
Je suis récemment passé de os.system à subprocess.Popen().
La commande est appelée plusieurs centaines de fois à la suite dans mon programme. Avant de lancer un programme, j'ai un petit print qui affiche la progression globale :
Ce qui est très bien avec Popen, c'est les processus séparés, j'ai d'énormes gains de perfs par rapport à os.system !
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 cmd = ... print "traitement fichier n°", i p = subprocess.Popen(shlex.split(cmd))
Par contre j'ai plusieurs petit soucis :
- Je n'ai plus la possibilité d'afficher la progression générale, tous les process se lancent en même temps.
- Je ne peux plus faire de ctr+C pour interrompre mon script, puisque celui-ci est terminé au bout de quelques secondes, après avoir lancé tous les processus.
Sur la doc, j'ai découvert le flag CREATE_NEW_PROCESS_GROUP qui me semblait être une bonne piste, mais je n'ai pas réussi a le faire fonctionner, visiblement cela ne fonctionne que sous windows.
Merci à vous,
Roipou
Partager