mirror of
https://github.com/python/cpython.git
synced 2025-11-28 22:18:54 +00:00
gh-136470: Correct InterpreterPoolExecutor's default thread name (GH-136472)
Some checks are pending
Tests / (push) Blocked by required conditions
Tests / Cross build Linux (push) Blocked by required conditions
Tests / Windows MSI (push) Blocked by required conditions
Tests / Change detection (push) Waiting to run
Tests / Docs (push) Blocked by required conditions
Tests / Check if Autoconf files are up to date (push) Blocked by required conditions
Tests / Check if generated files are up to date (push) Blocked by required conditions
Tests / Ubuntu SSL tests with OpenSSL (push) Blocked by required conditions
Tests / Ubuntu SSL tests with AWS-LC (push) Blocked by required conditions
Tests / WASI (push) Blocked by required conditions
Tests / Hypothesis tests on Ubuntu (push) Blocked by required conditions
Tests / Address sanitizer (push) Blocked by required conditions
Tests / Sanitizers (push) Blocked by required conditions
Tests / CIFuzz (push) Blocked by required conditions
Tests / All required checks pass (push) Blocked by required conditions
Lint / lint (push) Waiting to run
mypy / Run mypy on Lib/_pyrepl (push) Waiting to run
mypy / Run mypy on Lib/test/libregrtest (push) Waiting to run
mypy / Run mypy on Lib/tomllib (push) Waiting to run
mypy / Run mypy on Tools/build (push) Waiting to run
mypy / Run mypy on Tools/cases_generator (push) Waiting to run
mypy / Run mypy on Tools/clinic (push) Waiting to run
mypy / Run mypy on Tools/jit (push) Waiting to run
mypy / Run mypy on Tools/peg_generator (push) Waiting to run
Some checks are pending
Tests / (push) Blocked by required conditions
Tests / Cross build Linux (push) Blocked by required conditions
Tests / Windows MSI (push) Blocked by required conditions
Tests / Change detection (push) Waiting to run
Tests / Docs (push) Blocked by required conditions
Tests / Check if Autoconf files are up to date (push) Blocked by required conditions
Tests / Check if generated files are up to date (push) Blocked by required conditions
Tests / Ubuntu SSL tests with OpenSSL (push) Blocked by required conditions
Tests / Ubuntu SSL tests with AWS-LC (push) Blocked by required conditions
Tests / WASI (push) Blocked by required conditions
Tests / Hypothesis tests on Ubuntu (push) Blocked by required conditions
Tests / Address sanitizer (push) Blocked by required conditions
Tests / Sanitizers (push) Blocked by required conditions
Tests / CIFuzz (push) Blocked by required conditions
Tests / All required checks pass (push) Blocked by required conditions
Lint / lint (push) Waiting to run
mypy / Run mypy on Lib/_pyrepl (push) Waiting to run
mypy / Run mypy on Lib/test/libregrtest (push) Waiting to run
mypy / Run mypy on Lib/tomllib (push) Waiting to run
mypy / Run mypy on Tools/build (push) Waiting to run
mypy / Run mypy on Tools/cases_generator (push) Waiting to run
mypy / Run mypy on Tools/clinic (push) Waiting to run
mypy / Run mypy on Tools/jit (push) Waiting to run
mypy / Run mypy on Tools/peg_generator (push) Waiting to run
The OS thread name is now correctly prefixed with `InterpreterPoolExecutor` instead of `ThreadPoolExecutor`.
This commit is contained in:
parent
aec7f5f8b2
commit
246be21de1
3 changed files with 19 additions and 0 deletions
|
|
@ -118,5 +118,7 @@ class InterpreterPoolExecutor(_thread.ThreadPoolExecutor):
|
||||||
each worker interpreter.
|
each worker interpreter.
|
||||||
initargs: A tuple of arguments to pass to the initializer.
|
initargs: A tuple of arguments to pass to the initializer.
|
||||||
"""
|
"""
|
||||||
|
thread_name_prefix = (thread_name_prefix or
|
||||||
|
(f"InterpreterPoolExecutor-{self._counter()}"))
|
||||||
super().__init__(max_workers, thread_name_prefix,
|
super().__init__(max_workers, thread_name_prefix,
|
||||||
initializer, initargs)
|
initializer, initargs)
|
||||||
|
|
|
||||||
|
|
@ -1,3 +1,4 @@
|
||||||
|
import _thread
|
||||||
import asyncio
|
import asyncio
|
||||||
import contextlib
|
import contextlib
|
||||||
import io
|
import io
|
||||||
|
|
@ -498,6 +499,20 @@ class InterpreterPoolExecutorTest(
|
||||||
self.assertEqual(p.stdout.decode(), '')
|
self.assertEqual(p.stdout.decode(), '')
|
||||||
self.assertEqual(p.stderr.decode(), '')
|
self.assertEqual(p.stderr.decode(), '')
|
||||||
|
|
||||||
|
def test_thread_name_prefix(self):
|
||||||
|
self.assertStartsWith(self.executor._thread_name_prefix,
|
||||||
|
"InterpreterPoolExecutor-")
|
||||||
|
|
||||||
|
@unittest.skipUnless(hasattr(_thread, '_get_name'), "missing _thread._get_name")
|
||||||
|
def test_thread_name_prefix_with_thread_get_name(self):
|
||||||
|
def get_thread_name():
|
||||||
|
import _thread
|
||||||
|
return _thread._get_name()
|
||||||
|
|
||||||
|
# Some platforms (Linux) are using 16 bytes to store the thread name,
|
||||||
|
# so only compare the first 15 bytes (without the trailing \n).
|
||||||
|
self.assertStartsWith(self.executor.submit(get_thread_name).result(),
|
||||||
|
"InterpreterPoolExecutor-"[:15])
|
||||||
|
|
||||||
class AsyncioTest(InterpretersMixin, testasyncio_utils.TestCase):
|
class AsyncioTest(InterpretersMixin, testasyncio_utils.TestCase):
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,2 @@
|
||||||
|
Correct :class:`concurrent.futures.InterpreterPoolExecutor`'s default thread
|
||||||
|
name.
|
||||||
Loading…
Add table
Add a link
Reference in a new issue