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.

Author cagney
Recipients bquinlan, cagney, gregory.p.smith, hroncok, hugh, josh.r, jwilk, pablogsal, pitrou, vstinner
Date 2019-04-18.02:34:06
SpamBayes Score -1.0
Marked as misclassified Yes
Message-id <1555554846.9.0.823559915095.issue35866@roundup.psfhosted.org>
In-reply-to
Content
So:

#1 we've a bug: the single-threaded ProcessPoolExecutor test program should work 100% reliably - it does not

#2 we've a cause: ProcessPoolExecutor is implemented internally using an unfortunate combination of fork and threads, this is causing the deadlock

#3 we've got a workaround - something like:
   ProcessPoolExecutor(multiprocessing.get_context('spawn'))
but I'm guessing, the documentation is scant.

As for a fix, maybe:
- have ProcessPoolExecutor use 'spawn' by default; this way things always work
- have ProcessPoolExecutor properly synchronized its threads before "spawning"/"forking"/... so that "single-threaded" code works
- document that combining ProcessPoolExecutor's "fork" option and user threads isn't a good idea
History
Date User Action Args
2019-04-18 02:34:06cagneysetrecipients: + cagney, gregory.p.smith, bquinlan, pitrou, vstinner, jwilk, josh.r, hroncok, pablogsal, hugh
2019-04-18 02:34:06cagneysetmessageid: <1555554846.9.0.823559915095.issue35866@roundup.psfhosted.org>
2019-04-18 02:34:06cagneylinkissue35866 messages
2019-04-18 02:34:06cagneycreate