| 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() |