summaryrefslogtreecommitdiff
path: root/Lib/multiprocessing/sharedctypes.py
diff options
context:
space:
mode:
authorAndrew Kuchling <amk@amk.ca>2015-04-14 10:35:43 -0400
committerAndrew Kuchling <amk@amk.ca>2015-04-14 10:35:43 -0400
commit3b3863c2d496f01845eda76ccf6401458714397e (patch)
tree14af5692bc33ffc3a589478b03e33e597ce17166 /Lib/multiprocessing/sharedctypes.py
parentb6b4ba499008572740b20b22481074263fb4e5d7 (diff)
parentda4c26c69f751f7c0207b009b2372bdc12c08bba (diff)
downloadcpython-3b3863c2d496f01845eda76ccf6401458714397e.tar.gz
Merge from 3.4
Diffstat (limited to 'Lib/multiprocessing/sharedctypes.py')
-rw-r--r--Lib/multiprocessing/sharedctypes.py26
1 files changed, 10 insertions, 16 deletions
diff --git a/Lib/multiprocessing/sharedctypes.py b/Lib/multiprocessing/sharedctypes.py
index 0c178252d5..4258f591c4 100644
--- a/Lib/multiprocessing/sharedctypes.py
+++ b/Lib/multiprocessing/sharedctypes.py
@@ -188,6 +188,12 @@ class SynchronizedBase(object):
self.acquire = self._lock.acquire
self.release = self._lock.release
+ def __enter__(self):
+ return self._lock.__enter__()
+
+ def __exit__(self, *args):
+ return self._lock.__exit__(*args)
+
def __reduce__(self):
assert_spawning(self)
return synchronized, (self._obj, self._lock)
@@ -212,32 +218,20 @@ class SynchronizedArray(SynchronizedBase):
return len(self._obj)
def __getitem__(self, i):
- self.acquire()
- try:
+ with self:
return self._obj[i]
- finally:
- self.release()
def __setitem__(self, i, value):
- self.acquire()
- try:
+ with self:
self._obj[i] = value
- finally:
- self.release()
def __getslice__(self, start, stop):
- self.acquire()
- try:
+ with self:
return self._obj[start:stop]
- finally:
- self.release()
def __setslice__(self, start, stop, values):
- self.acquire()
- try:
+ with self:
self._obj[start:stop] = values
- finally:
- self.release()
class SynchronizedString(SynchronizedArray):