Соответствующая часть кода выглядит следующим образом:
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)
Что нужно сделать, это запустить все процессы, затем дождаться завершения каждого процесса, прежде чем продолжить. Он работает по большей части, но иногда вылетает в следующем разделе (когда ожидает завершения всех этих процессов).
Что-то не так с этим? Есть ли лучший способ сделать это?
Среда, в которой он должен работать, - это CentOS с Python 2.4, но я тестирую на Cygwin с Python 2.5, так что может случиться так, что он выйдет из строя на моей машине, но будет работать на Linux (машина с Linux очень медленно и эта ошибка встречается редко, поэтому я не смог ее устранить).