[Python-checkins] r70939 - in python/trunk: Doc/library/multiprocessing.rst Lib/multiprocessing/synchronize.py Lib/test/test_multiprocessing.py
jesse.noller
python-checkins at python.org
Wed Apr 1 05:45:50 CEST 2009
Author: jesse.noller
Date: Wed Apr 1 05:45:50 2009
New Revision: 70939
Log:
Fix multiprocessing.event to match the new threading.Event API
Modified:
python/trunk/Doc/library/multiprocessing.rst
python/trunk/Lib/multiprocessing/synchronize.py
python/trunk/Lib/test/test_multiprocessing.py
Modified: python/trunk/Doc/library/multiprocessing.rst
==============================================================================
--- python/trunk/Doc/library/multiprocessing.rst (original)
+++ python/trunk/Doc/library/multiprocessing.rst Wed Apr 1 05:45:50 2009
@@ -836,6 +836,12 @@
.. 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()
Modified: python/trunk/Lib/multiprocessing/synchronize.py
==============================================================================
--- python/trunk/Lib/multiprocessing/synchronize.py (original)
+++ python/trunk/Lib/multiprocessing/synchronize.py Wed Apr 1 05:45:50 2009
@@ -301,5 +301,10 @@
self._flag.release()
else:
self._cond.wait(timeout)
+
+ if self._flag.acquire(False):
+ self._flag.release()
+ return True
+ return False
finally:
self._cond.release()
Modified: python/trunk/Lib/test/test_multiprocessing.py
==============================================================================
--- python/trunk/Lib/test/test_multiprocessing.py (original)
+++ python/trunk/Lib/test/test_multiprocessing.py Wed Apr 1 05:45:50 2009
@@ -749,20 +749,22 @@
# 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 @@
#self.assertEqual(event.is_set(), False)
self.Process(target=self._test_event, args=(event,)).start()
- self.assertEqual(wait(), None)
+ self.assertEqual(wait(), True)
#
#
More information about the Python-checkins
mailing list