diff options
author | Miss Islington (bot) <31488909+miss-islington@users.noreply.github.com> | 2023-07-25 15:42:46 (GMT) |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-07-25 15:42:46 (GMT) |
commit | ca42d6720850967698d6e298e37a4225f0c67d8e (patch) | |
tree | 7c1bef6bb43fde0037c9ee979dae44ec8644792b /Lib/test | |
parent | 9c31d9405027cea9c2d039ade672d604663ed5b0 (diff) | |
download | cpython-ca42d6720850967698d6e298e37a4225f0c67d8e.zip cpython-ca42d6720850967698d6e298e37a4225f0c67d8e.tar.gz cpython-ca42d6720850967698d6e298e37a4225f0c67d8e.tar.bz2 |
[3.12] gh-105699: Add some stress tests for subinterpreter creation (GH-106966) (gh-107012)
gh-105699: Add some stress tests for subinterpreter creation (GH-106966)
(cherry picked from commit adda43dc0bcea853cbfa33126e5549c584cef8be)
Co-authored-by: Eric Snow <ericsnowcurrently@gmail.com>
Diffstat (limited to 'Lib/test')
-rw-r--r-- | Lib/test/test_interpreters.py | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/Lib/test/test_interpreters.py b/Lib/test/test_interpreters.py index d1bebe4..5981d96 100644 --- a/Lib/test/test_interpreters.py +++ b/Lib/test/test_interpreters.py @@ -7,6 +7,7 @@ import time from test import support from test.support import import_helper +from test.support import threading_helper _interpreters = import_helper.import_module('_xxsubinterpreters') _channels = import_helper.import_module('_xxinterpchannels') from test.support import interpreters @@ -463,6 +464,27 @@ class TestInterpreterRun(TestBase): # test_xxsubinterpreters covers the remaining Interpreter.run() behavior. +class StressTests(TestBase): + + # In these tests we generally want a lot of interpreters, + # but not so many that any test takes too long. + + def test_create_many_sequential(self): + alive = [] + for _ in range(100): + interp = interpreters.create() + alive.append(interp) + + def test_create_many_threaded(self): + alive = [] + def task(): + interp = interpreters.create() + alive.append(interp) + threads = (threading.Thread(target=task) for _ in range(200)) + with threading_helper.start_threads(threads): + pass + + class TestIsShareable(TestBase): def test_default_shareables(self): |