[英]Acquire a multiprocessing.Lock in a with statement if non-blocking or with timeout
[英]Can I acquire multiprocessing's Lock in a with statement?
如果一个进程无法解锁multiprocessing
进程锁,就会发生可怕的事情。 为了尽量减少发生这种情况的机会,我想在with
块中获取锁。 有什么内置的方法可以做到这一点,还是我需要自己动手?
是的,你可以这样做:
mylock = multiprocessing.Lock()
with mylock:
...
因为 Lock 是一个上下文管理器。 RLock 以及来自线程的 Lock 和 RLock 也是如此。
文档确实声明它是“threading.Lock 的克隆”,因此您可以参考“在 with 语句中使用锁、条件和信号量”
[编辑 2020: 文档现在明确提到了这一点]
是的。 该文件现在明确指出:
Lock支持上下文管理器协议,因此可以在with语句中使用。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.