| import unittest | |
| from threading import Thread | |
| from test.support import threading_helper | |
| class ZipThreading(unittest.TestCase): | |
| @staticmethod | |
| def work(enum): | |
| while True: | |
| try: | |
| next(enum) | |
| except StopIteration: | |
| break | |
| @threading_helper.reap_threads | |
| @threading_helper.requires_working_threading() | |
| def test_threading(self): | |
| number_of_threads = 8 | |
| number_of_iterations = 8 | |
| n = 40_000 | |
| enum = zip(range(n), range(n)) | |
| for _ in range(number_of_iterations): | |
| worker_threads = [] | |
| for ii in range(number_of_threads): | |
| worker_threads.append( | |
| Thread( | |
| target=self.work, | |
| args=[ | |
| enum, | |
| ], | |
| ) | |
| ) | |
| for t in worker_threads: | |
| t.start() | |
| for t in worker_threads: | |
| t.join() | |
| if __name__ == "__main__": | |
| unittest.main() |