Kaydet (Commit) 1c405b3e authored tarafından Antoine Pitrou's avatar Antoine Pitrou

Followup to 51c1f2cedb96 (and issue #12456):

qsize() raises NotImplementedError on OS X, don't use it.
üst 4334d740
...@@ -204,7 +204,7 @@ def _queue_management_worker(executor_reference, ...@@ -204,7 +204,7 @@ def _queue_management_worker(executor_reference,
# This is an upper bound # This is an upper bound
nb_children_alive = sum(p.is_alive() for p in processes.values()) nb_children_alive = sum(p.is_alive() for p in processes.values())
for i in range(0, nb_children_alive): 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 # If .join() is not called on the created processes then
# some multiprocessing.Queue methods may deadlock on Mac OS X. # some multiprocessing.Queue methods may deadlock on Mac OS X.
for p in processes.values(): for p in processes.values():
...@@ -265,18 +265,18 @@ def _queue_management_worker(executor_reference, ...@@ -265,18 +265,18 @@ def _queue_management_worker(executor_reference,
# - The executor that owns this worker has been collected OR # - The executor that owns this worker has been collected OR
# - The executor that owns this worker has been shutdown. # - The executor that owns this worker has been shutdown.
if shutting_down(): 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: try:
# Start shutting down by telling a process it can exit. # Since no new work items can be added, it is safe to shutdown
call_queue.put_nowait(None) # 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: except Full:
# This is not a problem: we will eventually be woken up (in # This is not a problem: we will eventually be woken up (in
# result_queue.get()) and be able to send a sentinel again, # result_queue.get()) and be able to send a sentinel again.
# if necessary.
pass pass
executor = None executor = None
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment