From: Eric Snow Date: Sat, 22 Jul 2023 12:21:55 +0000 (-0600) Subject: gh-105699: Add some stress tests for subinterpreter creation (#106966) X-Git-Tag: v3.13.0a1~1301 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=adda43dc0bcea853cbfa33126e5549c584cef8be;p=thirdparty%2FPython%2Fcpython.git gh-105699: Add some stress tests for subinterpreter creation (#106966) --- diff --git a/Lib/test/test_interpreters.py b/Lib/test/test_interpreters.py index d1bebe471583..5981d96de8de 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):