[Python-Dev] Proposed addition to threading module - released
"Martin v. Löwis"
martin at v.loewis.de
Tue Apr 25 01:35:46 CEST 2006
Tim Peters wrote:
> Does
>
> with cv:
>
> work to replace the outer (== only) acquire/try/finally/release dance?
Indeed it does - although implemented in a somewhat convoluted way:
A lock *is* a context (or is that "context manager"), i.e. it implements
def __context__(self): return self
__enter__=acquire
def __exit__(self,*args): return self.release() #roughly
A _Condition *has* a lock, so it could become the context (manager?)
through
def __context__(self): return self.lock
However, instead of doing that, it does
def __context__(self): return self
# roughly: __enter__ is actually set in __init__ to self.lock.acquire
def __enter__(self):
return self.acquire()
def __exit__(self):
return self.release
Looks somewhat redundant to me, but correct.
Regards,
Martin
More information about the Python-Dev
mailing list