Camilla Montonen added the comment:

I did some investigating using a test script and Python 3.7.0a0

from multiprocessing import Pool
import os
import time

def f(x):
        time.sleep(30)
        return x*x

if __name__=='__main__':
        print('Main pid {0}'.format(os.getpid()))
        p = Pool(5)
        p.map(f, [1,2,3])
        print('Returned')
        time.sleep(30)
and grepping for pipe and the parentpid in the output from lsof ( lsof | grep 
python.*<parentpid>.*pipe ). The pipes opened at the start of the script are 
still open even after the line print('Returned') is executed. I suppose this is 
expected because I did not call *p.close()*. All pipes are cleaned up after the 
parent process finishes.

When I repeat the experiment calling p.close() after p.map returns, all that is 
left is the 9 pipes opened by the parent. All pipes are cleaned up after parent 
script exits. 

@shani - could you please clarify how you were able to detect the leaking pipes?

----------

_______________________________________
Python tracker <rep...@bugs.python.org>
<http://bugs.python.org/issue23267>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com

Reply via email to