Issue #15101: Make pool finalizer avoid joining current thread.

This commit is contained in:
Richard Oudkerk 2012-06-18 16:02:49 +01:00
commit 0f884273b0
2 changed files with 8 additions and 3 deletions

View file

@ -496,7 +496,8 @@ class Pool(object):
# We must wait for the worker handler to exit before terminating
# workers because we don't want workers to be restarted behind our back.
debug('joining worker handler')
worker_handler.join()
if threading.current_thread() is not worker_handler:
worker_handler.join()
# Terminate workers which haven't already finished.
if pool and hasattr(pool[0], 'terminate'):
@ -506,10 +507,12 @@ class Pool(object):
p.terminate()
debug('joining task handler')
task_handler.join()
if threading.current_thread() is not task_handler:
task_handler.join()
debug('joining result handler')
result_handler.join()
if threading.current_thread() is not result_handler:
result_handler.join()
if pool and hasattr(pool[0], 'terminate'):
debug('joining pool workers')