Horrible things can happen if a process fails to unlock a multiprocessing
lock. To minimize the chance of that happening, I want to acquire the lock in a with
block. Is there any built in way I can do this or do I need to roll my own?
Yes, you can just do:
with multiprocessing.Lock():
...
as Lock is a context manager. So is RLock, and Lock and RLock from threading.
The documentation does state that it is "a clone of threading.Lock", so you can refer to "Using locks, conditions, and semaphores in the with statement"
[edit 2020: The documentation now mentions this explicitly]
Yes. the documentation now specifically states that:
Lock supports the context manager protocol and thus may be used in with statements.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With