如果进程无法解锁multiprocessing
锁定,可能会发生可怕的事情。为了最大限度地减少发生这种情况的可能性,我希望在with
块中获取锁定。有没有内置的方法可以做到这一点,还是我需要自己动手?
答案 0 :(得分:9)
是的,您可以这样做:
with multiprocessing.Lock():
...
因为Lock是一个上下文管理器。 RLock也是如此,Lock和RLock来自线程化。
documentation确实声明它是“threading.Lock的克隆”,因此您可以参考"Using locks, conditions, and semaphores in the with statement"
答案 1 :(得分:6)
是的,你可以。
Lock
州的文档:
class multiprocessing.Lock
A non-recursive lock object: a clone of `threading.Lock`.
阅读threading
的文档:
此模块提供的
acquire()
和{。}的所有对象release()
方法可用作with
的上下文管理器 言。
答案 2 :(得分:1)
是的。 documentation现在明确指出:
锁定支持上下文管理器协议,因此可以在 with 语句中使用。