[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

AltStyle によって変換されたページ (->オリジナル) /