multiprocessing signal defect

Neal Becker ndbecker2 at gmail.com
Fri Oct 29 08:12:19 EDT 2010


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?




More information about the Python-list mailing list