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 :

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))
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 !
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