[pypy-issue] Issue #3111: Multiprocessing occasionally hangs (pypy/pypy)

Aaron Wise issues-reply at bitbucket.org
Fri Nov 8 20:42:54 EST 2019

New issue 3111: Multiprocessing occasionally hangs

Aaron Wise:

I’ve had an issue with some multiprocessed code occasionally failing, and have managed to work it to a \(fairly\) minimal example \(below\).  Running this code with pypy3.6-7.2 on linux \(ubuntu 18.04\) causes the loop to hang occasionally \(about 1 in 10 runs\).  When I ctrl\+c, I get the following error message \(interrupted by the KeyboardInterrupt\):

> Traceback \(most recent call last\):  
> File "/path/to/pypy3.6-7.2/lib-python/3/multiprocessing/pool.py", line 720, in next  
> item = self.\_items.popleft\(\)  
> IndexError: pop from an empty deque

As far as I can tell, if I do not define maxtasksperchild=1 \(and thus reuse processes\) the error does not occur.  \(But it may occur very rarely, I’ve only tested it about 1000 times.\)


import multiprocessing

def process_chunk(chunk_index):
    return ([],[],[])

def main():
    i = 0
    with multiprocessing.Pool(5, maxtasksperchild=1) as p:
        for sub_headers, sub_results, sub_scores in p.imap_unordered(process_chunk, range(5000)):
            i += 1

if __name__ == '__main__':


More information about the pypy-issue mailing list