Message231073
If you import a module that creates a multiprocessing.Queue, puts a value, and then waits for to be received again from the queue, you run into a deadlock.
The issue is that Queue._feed does 'from .util import is_existing' - which needs the import lock, but is still being held by the main thread.
Attached a script that illustrates this.
Patch is a two line change, import is_exiting in line 49, remove the import inside the thread:
49c49
< from multiprocessing.util import debug, info, Finalize, register_after_fork
---
> from multiprocessing.util import debug, info, Finalize, register_after_fork, is_exiting
232d231
< from .util import is_exiting |
|
Date |
User |
Action |
Args |
2014-11-12 12:29:31 | ffinkernagel | set | recipients:
+ ffinkernagel |
2014-11-12 12:29:31 | ffinkernagel | set | messageid: <1415795371.09.0.078459007626.issue22853@psf.upfronthosting.co.za> |
2014-11-12 12:29:31 | ffinkernagel | link | issue22853 messages |
2014-11-12 12:29:30 | ffinkernagel | create | |
|