| import unittest | |
| import sys | |
| from threading import Thread, Barrier | |
| from test.support import threading_helper | |
| threading_helper.requires_working_threading(module=True) | |
| class EnumerateThreading(unittest.TestCase): | |
| @threading_helper.reap_threads | |
| def test_threading(self): | |
| number_of_threads = 10 | |
| number_of_iterations = 8 | |
| n = 100 | |
| start = sys.maxsize - 40 | |
| barrier = Barrier(number_of_threads) | |
| def work(enum): | |
| barrier.wait() | |
| while True: | |
| try: | |
| _ = next(enum) | |
| except StopIteration: | |
| break | |
| for it in range(number_of_iterations): | |
| enum = enumerate(tuple(range(start, start + n))) | |
| worker_threads = [] | |
| for ii in range(number_of_threads): | |
| worker_threads.append( | |
| Thread(target=work, args=[enum])) | |
| with threading_helper.start_threads(worker_threads): | |
| pass | |
| barrier.reset() | |
| if __name__ == "__main__": | |
| unittest.main() |