@@ -21,21 +21,29 @@ def test_create_many_sequential(self):
21
21
for _ in range (100 ):
22
22
interp = interpreters .create ()
23
23
alive .append (interp )
24
+ del alive
25
+ support .gc_collect ()
24
26
25
- @support .requires_resource ('cpu' )
26
- @threading_helper .requires_working_threading ()
27
- def test_create_many_threaded (self ):
27
+ @support .bigmemtest (size = 200 , memuse = 32 * 2 ** 20 , dry_run = False )
28
+ def test_create_many_threaded (self , size ):
28
29
alive = []
30
+ start = threading .Event ()
29
31
def task ():
32
+ # try to create all interpreters simultaneously
33
+ if not start .wait (support .SHORT_TIMEOUT ):
34
+ raise TimeoutError
30
35
interp = interpreters .create ()
31
36
alive .append (interp )
32
- threads = ( threading .Thread (target = task ) for _ in range (200 ))
37
+ threads = [ threading .Thread (target = task ) for _ in range (size )]
33
38
with threading_helper .start_threads (threads ):
34
- pass
39
+ start .set ()
40
+ del alive
41
+ support .gc_collect ()
35
42
36
- @support .requires_resource ('cpu' )
37
43
@threading_helper .requires_working_threading ()
38
- def test_many_threads_running_interp_in_other_interp (self ):
44
+ @support .bigmemtest (size = 200 , memuse = 34 * 2 ** 20 , dry_run = False )
45
+ def test_many_threads_running_interp_in_other_interp (self , size ):
46
+ start = threading .Event ()
39
47
interp = interpreters .create ()
40
48
41
49
script = f"""if True:
@@ -47,6 +55,9 @@ def run():
47
55
interp = interpreters .create ()
48
56
alreadyrunning = (f'{ interpreters .InterpreterError } : '
49
57
'interpreter already running' )
58
+ # try to run all interpreters simultaneously
59
+ if not start .wait (support .SHORT_TIMEOUT ):
60
+ raise TimeoutError
50
61
success = False
51
62
while not success :
52
63
try :
@@ -58,9 +69,10 @@ def run():
58
69
else :
59
70
success = True
60
71
61
- threads = ( threading .Thread (target = run ) for _ in range (200 ))
72
+ threads = [ threading .Thread (target = run ) for _ in range (size )]
62
73
with threading_helper .start_threads (threads ):
63
- pass
74
+ start .set ()
75
+ support .gc_collect ()
64
76
65
77
66
78
if __name__ == '__main__' :
0 commit comments