Hrvoje Niksic wrote: >> greg wrote: > > Actually, it's not that bad. _cleanup only polls the instances that > are no longer referenced by user code, but still running. If you hang > on to Popen instances, they won't be added to _active, and __init__ > won't reap them (_active is only populated from Popen.__del__). >
Perhaps that's the difference between Python 2.4 and 2.5. In 2.4, Popen's __init__ always appends self to _active: def __init__(...): _cleanup() ... self._execute_child(...) ... _active.append(self) > This version is a trivial modification of your code to that effect. > Does it work for you? > Nope it still doesn't work. I'm running python 2.4.4, tho. $ python test.py Starting child process 0 (26497) Starting child process 1 (26498) Starting child process 2 (26499) Child Process 2 terminated, restarting Child Process 2 terminated, restarting Child Process 2 terminated, restarting Child Process 2 terminated, restarting Child Process 2 terminated, restarting Child Process 2 terminated, restarting Child Process 2 terminated, restarting Child Process 2 terminated, restarting Child Process 2 terminated, restarting Child Process 2 terminated. Traceback (most recent call last): File "test.py", line 15, in ? pid, ignored = os.wait() OSError: [Errno 10] No child processes -- http://mail.python.org/mailman/listinfo/python-list