multiprocessing signal defect
Neal Becker
ndbecker2 at gmail.com
Fri Oct 29 08:39:53 EDT 2010
Adam Tauno Williams wrote:
> On Fri, 2010-10-29 at 08:12 -0400, Neal Becker wrote:
>> Seems multiprocessing doesn't behave well with signals:
>> ---------
>> from multiprocessing import Pool
>> import time
>> def sleep (dummy):
>> time.sleep (10)
>> if __name__ == '__main__':
>> pool = Pool (processes=2)
>> result = pool.map (sleep, range (4))
>> -------------
>> start it up
>> $ python test_multip.py
>> ----------------------
>> ps auxf | grep python
>> nbecker 6605 1.6 0.1 338192 6952 pts/1 Sl+ 08:03 0:00 |
>> \_ python test_multip.py
>> nbecker 6606 0.0 0.1 186368 4760 pts/1 S+ 08:03 0:00 |
>> \_ python test_multip.py
>> nbecker 6607 0.0 0.1 186372 4740 pts/1 S+ 08:03 0:00 |
>> \_ python test_multip.py
>> kill 6607
>> ps auxf | grep python
>> nbecker 6605 0.5 0.1 338192 6952 pts/1 Sl+ 08:03 0:00 |
>> \_ python test_multip.py
>> nbecker 6606 0.0 0.1 186368 4760 pts/1 S+ 08:03 0:00 |
>> \_ python test_multip.py
>> nbecker 6607 0.0 0.0 0 0 pts/1 Z+ 08:03 0:00 |
>> \_ [python] <defunct>
>> kill 6606
>> ps auxf | grep python
>> nbecker 6605 0.3 0.1 338192 6952 pts/1 Sl+ 08:03 0:00 |
>> \_ python test_multip.py
>> nbecker 6606 0.0 0.0 0 0 pts/1 Z+ 08:03 0:00 |
>> \_ [python] <defunct>
>> nbecker 6607 0.0 0.0 0 0 pts/1 Z+ 08:03 0:00 |
>> \_ [python] <defunct>
>> Now we have 2 dead children and the parent is hung forever.
>> Isn't this a serious defect?
>
> No, I think this is just POSIX/UNIX process behavior. If the parent
> never joins on the child the child can never exit [which is what a
> Zombie process is].
>
> For example, see the do_verify_workers method in
>
<http://coils.hg.sourceforge.net/hgweb/coils/coils/file/6ab5ade3e488/src/coils/logic/workflow/services/executor.py>
>
> A parent process needs to make some effort to reap its children.
Yes, and isn't this a defect in mulitprocessing module that the parent
process does not reap its children in response to signals like show above?
More information about the Python-list
mailing list