diff Lib/multiprocessing/managers.py @ 77442:2d2f206d040e

Issue #14059: Implement multiprocessing.Barrier
author Richard Oudkerk <shibturn@gmail.com>
date Fri, 15 Jun 2012 18:26:07 +0100
parents d31e83497c5a
children 831ae71d0bdc
line wrap: on
line diff
--- a/Lib/multiprocessing/managers.py	Fri Jun 15 19:12:04 2012 +0200
+++ b/Lib/multiprocessing/managers.py	Fri Jun 15 18:26:07 2012 +0100
@@ -993,6 +993,26 @@
     def wait(self, timeout=None):
         return self._callmethod('wait', (timeout,))
 
+
+class BarrierProxy(BaseProxy):
+    _exposed_ = ('__getattribute__', 'wait', 'abort', 'reset')
+    def wait(self, timeout=None):
+        return self._callmethod('wait', (timeout,))
+    def abort(self):
+        return self._callmethod('abort')
+    def reset(self):
+        return self._callmethod('reset')
+    @property
+    def parties(self):
+        return self._callmethod('__getattribute__', ('parties',))
+    @property
+    def n_waiting(self):
+        return self._callmethod('__getattribute__', ('n_waiting',))
+    @property
+    def broken(self):
+        return self._callmethod('__getattribute__', ('broken',))
+
+
 class NamespaceProxy(BaseProxy):
     _exposed_ = ('__getattribute__', '__setattr__', '__delattr__')
     def __getattr__(self, key):
@@ -1084,6 +1104,7 @@
 SyncManager.register('BoundedSemaphore', threading.BoundedSemaphore,
                      AcquirerProxy)
 SyncManager.register('Condition', threading.Condition, ConditionProxy)
+SyncManager.register('Barrier', threading.Barrier, BarrierProxy)
 SyncManager.register('Pool', Pool, PoolProxy)
 SyncManager.register('list', list, ListProxy)
 SyncManager.register('dict', dict, DictProxy)