aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/Lib/test/test_free_threading/test_itertools.py
diff options
context:
space:
mode:
Diffstat (limited to 'Lib/test/test_free_threading/test_itertools.py')
-rw-r--r--Lib/test/test_free_threading/test_itertools.py32
1 files changed, 30 insertions, 2 deletions
diff --git a/Lib/test/test_free_threading/test_itertools.py b/Lib/test/test_free_threading/test_itertools.py
index b8663ade1d4..9d366041917 100644
--- a/Lib/test/test_free_threading/test_itertools.py
+++ b/Lib/test/test_free_threading/test_itertools.py
@@ -1,6 +1,6 @@
import unittest
from threading import Thread, Barrier
-from itertools import batched, cycle
+from itertools import batched, chain, cycle
from test.support import threading_helper
@@ -17,7 +17,7 @@ class ItertoolsThreading(unittest.TestCase):
barrier.wait()
while True:
try:
- _ = next(it)
+ next(it)
except StopIteration:
break
@@ -62,6 +62,34 @@ class ItertoolsThreading(unittest.TestCase):
barrier.reset()
+ @threading_helper.reap_threads
+ def test_chain(self):
+ number_of_threads = 6
+ number_of_iterations = 20
+
+ barrier = Barrier(number_of_threads)
+ def work(it):
+ barrier.wait()
+ while True:
+ try:
+ next(it)
+ except StopIteration:
+ break
+
+ data = [(1, )] * 200
+ for it in range(number_of_iterations):
+ chain_iterator = chain(*data)
+ worker_threads = []
+ for ii in range(number_of_threads):
+ worker_threads.append(
+ Thread(target=work, args=[chain_iterator]))
+
+ with threading_helper.start_threads(worker_threads):
+ pass
+
+ barrier.reset()
+
+
if __name__ == "__main__":
unittest.main()