Fix potential resource leaks in concurrent.futures.ProcessPoolExecutor
by joining all queues and processes when shutdown() is called.
This commit is contained in:
parent
db535957cd
commit
d06a065a44
|
@ -209,6 +209,8 @@ def _queue_management_worker(executor_reference,
|
|||
# some multiprocessing.Queue methods may deadlock on Mac OS X.
|
||||
for p in processes.values():
|
||||
p.join()
|
||||
# Release resources held by the queue
|
||||
call_queue.close()
|
||||
|
||||
while True:
|
||||
_add_call_item_to_queue(pending_work_items,
|
||||
|
@ -246,7 +248,8 @@ def _queue_management_worker(executor_reference,
|
|||
# Clean shutdown of a worker using its PID
|
||||
# (avoids marking the executor broken)
|
||||
assert shutting_down()
|
||||
del processes[result_item]
|
||||
p = processes.pop(result_item)
|
||||
p.join()
|
||||
if not processes:
|
||||
shutdown_worker()
|
||||
return
|
||||
|
|
|
@ -634,7 +634,8 @@ def test_main():
|
|||
ThreadPoolAsCompletedTests,
|
||||
FutureTests,
|
||||
ProcessPoolShutdownTest,
|
||||
ThreadPoolShutdownTest)
|
||||
ThreadPoolShutdownTest,
|
||||
)
|
||||
finally:
|
||||
test.support.reap_children()
|
||||
|
||||
|
|
|
@ -228,6 +228,9 @@ Core and Builtins
|
|||
Library
|
||||
-------
|
||||
|
||||
- Fix potential resource leaks in concurrent.futures.ProcessPoolExecutor
|
||||
by joining all queues and processes when shutdown() is called.
|
||||
|
||||
- Issue #11603: Fix a crash when __str__ is rebound as __repr__. Patch by
|
||||
Andreas Stührk.
|
||||
|
||||
|
|
Loading…
Reference in New Issue