On Fri, Aug 8, 2014 at 7:25 AM, Ethan Furman <et...@stoneleaf.us> wrote: > On 08/08/2014 04:51 AM, cool-RR wrote: >> >> >> If I want to acquire a `threading.Lock` using the context manager >> protocol, >> is it possible to specify the `blocking` and `timeout` arguments that >> `acquire` would usually take? > > > Not that I know of, but why would you want to? There's no built-in 'if' > with a 'with' block -- how would your code know whether it ran or not?
@contextmanager def locking(lock, blocking=False, timeout=-1): try: yield lock.acquire(blocking, timeout) finally: lock.release() with locking(lock, timeout=5) as acquired: if acquired: print('yay!') -- https://mail.python.org/mailman/listinfo/python-list