[Python-checkins] gh-105699: Add some stress tests for subinterpreter creation (#106966)

ambv webhook-mailer at python.org
Sat Jul 22 08:21:58 EDT 2023


https://github.com/python/cpython/commit/adda43dc0bcea853cbfa33126e5549c584cef8be
commit: adda43dc0bcea853cbfa33126e5549c584cef8be
branch: main
author: Eric Snow <ericsnowcurrently at gmail.com>
committer: ambv <lukasz at langa.pl>
date: 2023-07-22T14:21:55+02:00
summary:

gh-105699: Add some stress tests for subinterpreter creation (#106966)

files:
M Lib/test/test_interpreters.py

diff --git a/Lib/test/test_interpreters.py b/Lib/test/test_interpreters.py
index d1bebe4715832..5981d96de8de0 100644
--- a/Lib/test/test_interpreters.py
+++ b/Lib/test/test_interpreters.py
@@ -7,6 +7,7 @@
 
 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 @@ def test_bytes_for_script(self):
     # 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):



More information about the Python-checkins mailing list