[New-bugs-announce] [issue40444] multiprocessing.Pool deadlocks with only print statements

Darin Tay report at bugs.python.org
Wed Apr 29 18:52:09 EDT 2020


New submission from Darin Tay <darin.tay at gmail.com>:

I ran into a deadlock that I've reduced to a small and consistent repro, tested on 3.7.5 and 3.8.0.


Reading through https://bugs.python.org/issue6721 now I suspect it is just another case of that, but not certain.


In particular, I'm not using any explicit threads, though presumably multiprocessing.Pool is using one under-the-hood.  If so, it seems a bit rough that multiprocessing can by itself cause the fork issues it tries to warn about ("Note that safely forking a multithreaded process is problematic.")



# This very quickly and consistently hangs after a few attempts on my machines
def run(x):
    print("Worker with ", x)
    return x

def main():
    for i in range(1000):
        print("Attempt #", i)
        from multiprocessing import Pool

        with Pool(processes=16, maxtasksperchild=1) as p:
            for entry in p.imap_unordered(run, range(50)):
                print("Main received back ", entry)


if __name__ == "__main__":
    main()

----------
components: Library (Lib)
messages: 367712
nosy: DarinTay
priority: normal
severity: normal
status: open
title: multiprocessing.Pool deadlocks with only print statements
type: behavior
versions: Python 3.7, Python 3.8

_______________________________________
Python tracker <report at bugs.python.org>
<https://bugs.python.org/issue40444>
_______________________________________


More information about the New-bugs-announce mailing list