]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
gh-105699: Add some stress tests for subinterpreter creation (#106966)
authorEric Snow <ericsnowcurrently@gmail.com>
Sat, 22 Jul 2023 12:21:55 +0000 (06:21 -0600)
committerGitHub <noreply@github.com>
Sat, 22 Jul 2023 12:21:55 +0000 (14:21 +0200)
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):