]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
[3.12] gh-105699: Add some stress tests for subinterpreter creation (GH-106966) ...
authorMiss Islington (bot) <31488909+miss-islington@users.noreply.github.com>
Tue, 25 Jul 2023 15:42:46 +0000 (08:42 -0700)
committerGitHub <noreply@github.com>
Tue, 25 Jul 2023 15:42:46 +0000 (09:42 -0600)
gh-105699: Add some stress tests for subinterpreter creation (GH-106966)
(cherry picked from commit adda43dc0bcea853cbfa33126e5549c584cef8be)

Co-authored-by: Eric Snow <ericsnowcurrently@gmail.com>
Lib/test/test_interpreters.py

index d1bebe47158322846f9bab9a2a90c7e29ff9289c..5981d96de8de066644eb872e96d0850f92fc689c 100644 (file)
@@ -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):