changeset: 71144:ce52310f61a0 user: Antoine Pitrou date: Sun Jul 03 13:17:06 2011 +0200 files: Lib/concurrent/futures/process.py description: Followup to 51c1f2cedb96 (and issue #12456): qsize() raises NotImplementedError on OS X, don't use it. diff -r 3ce11ddc9ec3 -r ce52310f61a0 Lib/concurrent/futures/process.py --- a/Lib/concurrent/futures/process.py Sun Jul 03 10:35:41 2011 +0100 +++ b/Lib/concurrent/futures/process.py Sun Jul 03 13:17:06 2011 +0200 @@ -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

AltStyle によって変換されたページ (->オリジナル) /