diff options
author | Gregory P. Smith <greg@krypto.org> | 2017-06-22 06:41:13 (GMT) |
---|---|---|
committer | GitHub <noreply@github.com> | 2017-06-22 06:41:13 (GMT) |
commit | a3d91b43c2851312fb942f31afa12f5961706db6 (patch) | |
tree | 6988e0a35b1ee081c33a7ad5324521c4dc892425 /Lib | |
parent | a0e911b190a229693a1b9948caf768de0069046b (diff) | |
download | cpython-a3d91b43c2851312fb942f31afa12f5961706db6.zip cpython-a3d91b43c2851312fb942f31afa12f5961706db6.tar.gz cpython-a3d91b43c2851312fb942f31afa12f5961706db6.tar.bz2 |
bpo-29212: Fix the ugly repr() ThreadPoolExecutor thread name. (#2315)
bpo-29212: Fix the ugly ThreadPoolExecutor thread name.
Fixes the newly introduced ugly default thread name for concurrent.futures
thread.ThreadPoolExecutor threads. They'll now resemble the old <=3.5
threading default Thread-x names by being named ThreadPoolExecutor-y_n.
Diffstat (limited to 'Lib')
-rw-r--r-- | Lib/concurrent/futures/thread.py | 8 | ||||
-rw-r--r-- | Lib/test/test_concurrent_futures.py | 7 |
2 files changed, 10 insertions, 5 deletions
diff --git a/Lib/concurrent/futures/thread.py b/Lib/concurrent/futures/thread.py index 03d276b..1f0a1d4 100644 --- a/Lib/concurrent/futures/thread.py +++ b/Lib/concurrent/futures/thread.py @@ -7,6 +7,7 @@ __author__ = 'Brian Quinlan (brian@sweetapp.com)' import atexit from concurrent.futures import _base +import itertools import queue import threading import weakref @@ -81,6 +82,10 @@ def _worker(executor_reference, work_queue): _base.LOGGER.critical('Exception in worker', exc_info=True) class ThreadPoolExecutor(_base.Executor): + + # Used to assign unique thread names when thread_name_prefix is not supplied. + _counter = itertools.count().__next__ + def __init__(self, max_workers=None, thread_name_prefix=''): """Initializes a new ThreadPoolExecutor instance. @@ -101,7 +106,8 @@ class ThreadPoolExecutor(_base.Executor): self._threads = set() self._shutdown = False self._shutdown_lock = threading.Lock() - self._thread_name_prefix = thread_name_prefix + self._thread_name_prefix = (thread_name_prefix or + ("ThreadPoolExecutor-%d" % self._counter())) def submit(self, fn, *args, **kwargs): with self._shutdown_lock: diff --git a/Lib/test/test_concurrent_futures.py b/Lib/test/test_concurrent_futures.py index 23e95b2..e2da47b 100644 --- a/Lib/test/test_concurrent_futures.py +++ b/Lib/test/test_concurrent_futures.py @@ -172,10 +172,9 @@ class ThreadPoolShutdownTest(ThreadPoolMixin, ExecutorShutdownTest, unittest.Tes del executor for t in threads: - # We don't particularly care what the default name is, just that - # it has a default name implying that it is a ThreadPoolExecutor - # followed by what looks like a thread number. - self.assertRegex(t.name, r'^.*ThreadPoolExecutor.*_[0-4]$') + # Ensure that our default name is reasonably sane and unique when + # no thread_name_prefix was supplied. + self.assertRegex(t.name, r'ThreadPoolExecutor-\d+_[0-4]$') t.join() |