From cfd4661e78bd2256caaf80cf29588e5119e787b0 Mon Sep 17 00:00:00 2001 From: Guido van Rossum Date: Tue, 2 Sep 2014 10:39:18 -0700 Subject: Closes #21527: Add default number of workers to ThreadPoolExecutor. (Claudiu Popa.) --- Lib/concurrent/futures/thread.py | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) (limited to 'Lib/concurrent') diff --git a/Lib/concurrent/futures/thread.py b/Lib/concurrent/futures/thread.py index 8d6081cf15..3ae442d987 100644 --- a/Lib/concurrent/futures/thread.py +++ b/Lib/concurrent/futures/thread.py @@ -10,6 +10,7 @@ from concurrent.futures import _base import queue import threading import weakref +import os # Workers are created as daemon threads. This is done to allow the interpreter # to exit when there are still idle threads in a ThreadPoolExecutor's thread @@ -80,13 +81,17 @@ def _worker(executor_reference, work_queue): _base.LOGGER.critical('Exception in worker', exc_info=True) class ThreadPoolExecutor(_base.Executor): - def __init__(self, max_workers): + def __init__(self, max_workers=None): """Initializes a new ThreadPoolExecutor instance. Args: max_workers: The maximum number of threads that can be used to execute the given calls. """ + if max_workers is None: + # Use this number because ThreadPoolExecutor is often + # used to overlap I/O instead of CPU work. + max_workers = (os.cpu_count() or 1) * 5 if max_workers <= 0: raise ValueError("max_workers must be greater than 0") -- cgit v1.2.1