[Python-checkins] cpython (2.7): Issue #15101: Make pool finalizer avoid joining current thread

richard.oudkerk python-checkins at python.org
Mon Jun 18 17:08:38 CEST 2012


http://hg.python.org/cpython/rev/4c07b9c49b75
changeset:   77506:4c07b9c49b75
branch:      2.7
parent:      77502:8b38a81ba3bf
user:        Richard Oudkerk <shibturn at gmail.com>
date:        Mon Jun 18 15:37:31 2012 +0100
summary:
  Issue #15101: Make pool finalizer avoid joining current thread

files:
  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
--- a/Lib/multiprocessing/pool.py
+++ b/Lib/multiprocessing/pool.py
@@ -489,7 +489,8 @@
         # 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 @@
                     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
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -67,6 +67,8 @@
 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.

-- 
Repository URL: http://hg.python.org/cpython


More information about the Python-checkins mailing list