Issue #11815: Use a light-weight SimpleQueue for the result queue in concurrent.futures.ProcessPoolExecutor.
This commit is contained in:
parent
3fdd9b681d
commit
b7877f203d
|
@ -49,6 +49,7 @@ import atexit
|
|||
from concurrent.futures import _base
|
||||
import queue
|
||||
import multiprocessing
|
||||
from multiprocessing.queues import SimpleQueue
|
||||
import threading
|
||||
import weakref
|
||||
|
||||
|
@ -204,7 +205,7 @@ def _queue_manangement_worker(executor_reference,
|
|||
work_ids_queue,
|
||||
call_queue)
|
||||
|
||||
result_item = result_queue.get(block=True)
|
||||
result_item = result_queue.get()
|
||||
if result_item is not None:
|
||||
work_item = pending_work_items[result_item.work_id]
|
||||
del pending_work_items[result_item.work_id]
|
||||
|
@ -284,7 +285,7 @@ class ProcessPoolExecutor(_base.Executor):
|
|||
# because futures in the call queue cannot be cancelled.
|
||||
self._call_queue = multiprocessing.Queue(self._max_workers +
|
||||
EXTRA_QUEUED_CALLS)
|
||||
self._result_queue = multiprocessing.Queue()
|
||||
self._result_queue = SimpleQueue()
|
||||
self._work_ids = queue.Queue()
|
||||
self._queue_management_thread = None
|
||||
self._processes = set()
|
||||
|
|
|
@ -103,6 +103,9 @@ Core and Builtins
|
|||
Library
|
||||
-------
|
||||
|
||||
- Issue #11815: Use a light-weight SimpleQueue for the result queue in
|
||||
concurrent.futures.ProcessPoolExecutor.
|
||||
|
||||
- Issue #5162: Treat services like frozen executables to allow child spawning
|
||||
from multiprocessing.forking on Windows.
|
||||
|
||||
|
|
Loading…
Reference in New Issue