mirror of
				https://github.com/python/cpython.git
				synced 2025-10-30 18:07:37 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			38 lines
		
	
	
	
		
			1.1 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			38 lines
		
	
	
	
		
			1.1 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
| 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()
 | 
