mirror of
https://github.com/python/cpython.git
synced 2025-09-27 02:39:58 +00:00
bpo-31326: ProcessPoolExecutor waits for the call queue thread (#3265)
* bpo-31326: ProcessPoolExecutor waits for the call queue thread concurrent.futures.ProcessPoolExecutor.shutdown() now explicitly closes the call queue. Moreover, shutdown(wait=True) now also join the call queue thread, to prevent leaking a dangling thread. * Fix for shutdown() being called twice.
This commit is contained in:
parent
97e1b1c814
commit
b713adf27a
2 changed files with 8 additions and 1 deletions
|
@ -507,7 +507,11 @@ class ProcessPoolExecutor(_base.Executor):
|
||||||
# To reduce the risk of opening too many files, remove references to
|
# To reduce the risk of opening too many files, remove references to
|
||||||
# objects that use file descriptors.
|
# objects that use file descriptors.
|
||||||
self._queue_management_thread = None
|
self._queue_management_thread = None
|
||||||
self._call_queue = None
|
if self._call_queue is not None:
|
||||||
|
self._call_queue.close()
|
||||||
|
if wait:
|
||||||
|
self._call_queue.join_thread()
|
||||||
|
self._call_queue = None
|
||||||
self._result_queue = None
|
self._result_queue = None
|
||||||
self._processes = None
|
self._processes = None
|
||||||
shutdown.__doc__ = _base.Executor.shutdown.__doc__
|
shutdown.__doc__ = _base.Executor.shutdown.__doc__
|
||||||
|
|
|
@ -0,0 +1,3 @@
|
||||||
|
concurrent.futures.ProcessPoolExecutor.shutdown() now explicitly closes the
|
||||||
|
call queue. Moreover, shutdown(wait=True) now also join the call queue
|
||||||
|
thread, to prevent leaking a dangling thread.
|
Loading…
Add table
Add a link
Reference in a new issue