diff options
author | Victor Stinner <victor.stinner@gmail.com> | 2017-09-01 22:25:11 (GMT) |
---|---|---|
committer | GitHub <noreply@github.com> | 2017-09-01 22:25:11 (GMT) |
commit | b713adf27a76b5df95e3ee5f85f9064a2763ae35 (patch) | |
tree | bac3811accd903d51a7346fb15dad045d7a64ecc /Lib | |
parent | 97e1b1c81458d2109b2ffed32ffa1eb643a6c3b9 (diff) | |
download | cpython-b713adf27a76b5df95e3ee5f85f9064a2763ae35.zip cpython-b713adf27a76b5df95e3ee5f85f9064a2763ae35.tar.gz cpython-b713adf27a76b5df95e3ee5f85f9064a2763ae35.tar.bz2 |
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.
Diffstat (limited to 'Lib')
-rw-r--r-- | Lib/concurrent/futures/process.py | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/Lib/concurrent/futures/process.py b/Lib/concurrent/futures/process.py index 03b28ab..50ee296 100644 --- a/Lib/concurrent/futures/process.py +++ b/Lib/concurrent/futures/process.py @@ -507,7 +507,11 @@ class ProcessPoolExecutor(_base.Executor): # To reduce the risk of opening too many files, remove references to # objects that use file descriptors. 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._processes = None shutdown.__doc__ = _base.Executor.shutdown.__doc__ |