From 4215d2738a44be9eca09eb7b48c31ed805c8fb60 Mon Sep 17 00:00:00 2001 From: Richard Oudkerk Date: Mon, 18 Jun 2012 15:37:31 +0100 Subject: [PATCH] Issue #15101: Make pool finalizer avoid joining current thread --- Lib/multiprocessing/pool.py | 9 ++++++--- Misc/NEWS | 2 ++ 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/Lib/multiprocessing/pool.py b/Lib/multiprocessing/pool.py index 170aa7f7c7..00c904a8a7 100644 --- a/Lib/multiprocessing/pool.py +++ b/Lib/multiprocessing/pool.py @@ -489,7 +489,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(1e100) # Terminate workers which haven't already finished. if pool and hasattr(pool[0], 'terminate'): @@ -499,10 +500,12 @@ class Pool(object): p.terminate() debug('joining task handler') - task_handler.join(1e100) + if threading.current_thread() is not task_handler: + task_handler.join(1e100) debug('joining result handler') - result_handler.join(1e100) + if threading.current_thread() is not result_handler: + result_handler.join(1e100) if pool and hasattr(pool[0], 'terminate'): debug('joining pool workers') diff --git a/Misc/NEWS b/Misc/NEWS index a11c488c3e..11fb95fc2a 100644 --- a/Misc/NEWS +++ b/Misc/NEWS @@ -67,6 +67,8 @@ Core and Builtins Library ------- +- Issue #15101: Make pool finalizer avoid joining current thread. + - Issue #15054: A bug in tokenize.tokenize that caused string literals with 'b' and 'br' prefixes to be incorrectly tokenized has been fixed. Patch by Serhiy Storchaka. -- 2.40.0