This issue tracker has been migrated to GitHub, and is currently read-only.
For more information, see the GitHub FAQs in the Python's Developer Guide.

classification
Title: multiprocessing.Pool deadlocks with only print statements
Type: behavior Stage:
Components: Library (Lib) Versions: Python 3.8, Python 3.7
process
Status: open Resolution:
Dependencies: Superseder:
Assigned To: Nosy List: DarinTay, davin, pitrou, tim.peters
Priority: normal Keywords:

Created on 2020-04-29 22:52 by DarinTay, last changed 2022-04-11 14:59 by admin.

Messages (3)
msg367712 - (view) Author: Darin Tay (DarinTay) Date: 2020-04-29 22:52
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()
msg367718 - (view) Author: Tim Peters (tim.peters) * (Python committer) Date: 2020-04-29 23:59
Just noting that the program runs to completion without issues under 3.8.1, but on Win10.  Of course Windows doesn't support fork().
msg367719 - (view) Author: Darin Tay (DarinTay) Date: 2020-04-30 00:17
Ah yes, I should have mentioned this is on Linux!  I also got around to testing on 3.8.2 (linux), where it still reproduces.
History
Date User Action Args
2022-04-11 14:59:30adminsetgithub: 84624
2020-04-30 22:45:06ned.deilysetnosy: + pitrou, davin
2020-04-30 00:17:33DarinTaysetmessages: + msg367719
2020-04-29 23:59:12tim.peterssetnosy: + tim.peters
messages: + msg367718
2020-04-29 22:52:09DarinTaycreate