mirror of https://github.com/python/cpython
ac10e0c932
When the pull is not used via the context manager or terminate() is called, there is a system in multiprocessing.util that handles finalization of all pools via an atexit handler (the Finalize) class. This class registers the _terminate_pool handler in the registry of finalizers of the module, and that registry is called on interpreter exit via _exit_function. The problem is that the "happy" path with the context manager or manual call to finalize() does some extra steps that _terminate_pool does not. The step that is not executed when the atexit() handler calls _terminate_pool is pinging the _change_notifier queue to unblock the maintenance threads. This commit moves the notification to the _terminate_pool function so is called from both code paths. Co-authored-by: Pablo Galindo <Pablogsal@gmail.com> |
||
---|---|---|
.. | ||
dummy | ||
__init__.py | ||
connection.py | ||
context.py | ||
forkserver.py | ||
heap.py | ||
managers.py | ||
pool.py | ||
popen_fork.py | ||
popen_forkserver.py | ||
popen_spawn_posix.py | ||
popen_spawn_win32.py | ||
process.py | ||
queues.py | ||
reduction.py | ||
resource_sharer.py | ||
resource_tracker.py | ||
shared_memory.py | ||
sharedctypes.py | ||
spawn.py | ||
synchronize.py | ||
util.py |