La partie pertinente du code ressemble à ceci:Frai et d'attendre les processus enfants en Python
pids = []
for size in SIZES:
pids.append(os.spawnv(os.P_NOWAIT, RESIZECMD, [RESIZECMD, lotsOfOptions]))
# Wait for all spawned imagemagick processes to finish
while pids:
(pid, status) = os.waitpid(0, 0)
if pid:
pids.remove(pid)
Ce que cela devrait faire fraie tous les processus au large, puis d'attendre pour chaque processus pour terminer avant de poursuivre . Ce que cela fait, c'est travailler pour la plupart, mais parfois tomber en panne sur la section suivante (quand il s'attend à ce que tous ces processus soient terminés).
Y at-il quelque chose qui ne va pas? Y a-t-il une meilleure façon de le faire? L'environnement sur lequel il doit travailler est CentOS avec Python 2.4, mais je suis en train de tester sur Cygwin avec Python 2.5, il se peut donc qu'il échoue sur ma machine mais fonctionne sur Linux (la machine Linux est très lent et cette erreur est rare, donc je n'ai pas pu l'obtenir là-bas).
Je suis confus au sujet de pourquoi je besoin d'installer ce module lorsque 'subprocess.Popen()' fonctionne très bien en Python 2.4 –
@Brendan, corrections de bugs importants, esp. pour les programmes qui utilisent à la fois les sous-processus et les threads - cela est mentionné sur la courte page que je vous ai indiquée, c'est tout le 2ème paragraphe. Y a-t-il une raison pour laquelle vous avez besoin de la liste complète des correctifs ...? Manipulation EINTR, plus de problèmes avec les grandes FD, plus de fuites FD/poignée ... –
Oh je vois. J'ai demandé parce que c'est un projet de travail et c'est beaucoup plus facile si je n'ai pas besoin d'installer quelque chose de nouveau. Merci. –