我可以在with语句中获取多处理的Lock吗?

时间:2013-08-22 16:58:41

标签: python multiprocessing with-statement

如果进程无法解锁multiprocessing锁定,可能会发生可怕的事情。为了最大限度地减少发生这种情况的可能性,我希望在with块中获取锁定。有没有内置的方法可以做到这一点,还是我需要自己动手?

3 个答案:

答案 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 语句中使用。