[Python-checkins] cpython: Followup to 51c1f2cedb96 (and issue #12456):

antoine.pitrou python-checkins at python.org
Sun Jul 3 13:17:52 CEST 2011


http://hg.python.org/cpython/rev/ce52310f61a0
changeset:   71144:ce52310f61a0
user:        Antoine Pitrou <solipsis at pitrou.net>
date:        Sun Jul 03 13:17:06 2011 +0200
summary:
  Followup to 51c1f2cedb96 (and issue #12456):
qsize() raises NotImplementedError on OS X, don't use it.

files:
  Lib/concurrent/futures/process.py |  20 +++++++++---------
  1 files changed, 10 insertions(+), 10 deletions(-)


diff --git a/Lib/concurrent/futures/process.py b/Lib/concurrent/futures/process.py
--- a/Lib/concurrent/futures/process.py
+++ b/Lib/concurrent/futures/process.py
@@ -204,7 +204,7 @@
         # This is an upper bound
         nb_children_alive = sum(p.is_alive() for p in processes.values())
         for i in range(0, nb_children_alive):
-            call_queue.put(None)
+            call_queue.put_nowait(None)
         # If .join() is not called on the created processes then
         # some multiprocessing.Queue methods may deadlock on Mac OS X.
         for p in processes.values():
@@ -265,18 +265,18 @@
         #   - The executor that owns this worker has been collected OR
         #   - The executor that owns this worker has been shutdown.
         if shutting_down():
-            # Since no new work items can be added, it is safe to shutdown
-            # this thread if there are no pending work items.
-            if not pending_work_items and call_queue.qsize() == 0:
-                shutdown_worker()
-                return
             try:
-                # Start shutting down by telling a process it can exit.
-                call_queue.put_nowait(None)
+                # Since no new work items can be added, it is safe to shutdown
+                # this thread if there are no pending work items.
+                if not pending_work_items:
+                    shutdown_worker()
+                    return
+                else:
+                    # Start shutting down by telling a process it can exit.
+                    call_queue.put_nowait(None)
             except Full:
                 # This is not a problem: we will eventually be woken up (in
-                # result_queue.get()) and be able to send a sentinel again,
-                # if necessary.
+                # result_queue.get()) and be able to send a sentinel again.
                 pass
         executor = None
 

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


More information about the Python-checkins mailing list