mirror of
				https://github.com/python/cpython.git
				synced 2025-10-31 05:31:20 +00:00 
			
		
		
		
	Fix multiprocessing.event to match the new threading.Event API
This commit is contained in:
		
							parent
							
								
									a83da3507f
								
							
						
					
					
						commit
						02cb0eb231
					
				
					 3 changed files with 20 additions and 7 deletions
				
			
		|  | @ -836,6 +836,12 @@ object -- see :ref:`multiprocessing-managers`. | |||
| .. class:: Event() | ||||
| 
 | ||||
|    A clone of :class:`threading.Event`. | ||||
|    This method returns the state of the internal semaphore on exit, so it | ||||
|    will always return ``True`` except if a timeout is given and the operation | ||||
|    times out. | ||||
| 
 | ||||
|    .. versionchanged:: 2.7 | ||||
|       Previously, the method always returned ``None``. | ||||
| 
 | ||||
| .. class:: Lock() | ||||
| 
 | ||||
|  |  | |||
|  | @ -301,5 +301,10 @@ def wait(self, timeout=None): | |||
|                 self._flag.release() | ||||
|             else: | ||||
|                 self._cond.wait(timeout) | ||||
| 
 | ||||
|             if self._flag.acquire(False): | ||||
|                 self._flag.release() | ||||
|                 return True | ||||
|             return False | ||||
|         finally: | ||||
|             self._cond.release() | ||||
|  |  | |||
|  | @ -749,20 +749,22 @@ def test_event(self): | |||
| 
 | ||||
|         # Removed temporaily, due to API shear, this does not | ||||
|         # work with threading._Event objects. is_set == isSet | ||||
|         #self.assertEqual(event.is_set(), False) | ||||
|         self.assertEqual(event.is_set(), False) | ||||
| 
 | ||||
|         self.assertEqual(wait(0.0), None) | ||||
|         # Removed, threading.Event.wait() will return the value of the __flag | ||||
|         # instead of None. API Shear with the semaphore backed mp.Event | ||||
|         self.assertEqual(wait(0.0), False) | ||||
|         self.assertTimingAlmostEqual(wait.elapsed, 0.0) | ||||
|         self.assertEqual(wait(TIMEOUT1), None) | ||||
|         self.assertEqual(wait(TIMEOUT1), False) | ||||
|         self.assertTimingAlmostEqual(wait.elapsed, TIMEOUT1) | ||||
| 
 | ||||
|         event.set() | ||||
| 
 | ||||
|         # See note above on the API differences | ||||
|         # self.assertEqual(event.is_set(), True) | ||||
|         self.assertEqual(wait(), None) | ||||
|         self.assertEqual(event.is_set(), True) | ||||
|         self.assertEqual(wait(), True) | ||||
|         self.assertTimingAlmostEqual(wait.elapsed, 0.0) | ||||
|         self.assertEqual(wait(TIMEOUT1), None) | ||||
|         self.assertEqual(wait(TIMEOUT1), True) | ||||
|         self.assertTimingAlmostEqual(wait.elapsed, 0.0) | ||||
|         # self.assertEqual(event.is_set(), True) | ||||
| 
 | ||||
|  | @ -771,7 +773,7 @@ def test_event(self): | |||
|         #self.assertEqual(event.is_set(), False) | ||||
| 
 | ||||
|         self.Process(target=self._test_event, args=(event,)).start() | ||||
|         self.assertEqual(wait(), None) | ||||
|         self.assertEqual(wait(), True) | ||||
| 
 | ||||
| # | ||||
| # | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Jesse Noller
						Jesse Noller