如果进程无法解锁multiprocessing
锁,可能会发生可怕的事情。为了尽量减少发生这种情况的机会,我想在一个with
块中获取锁。有什么内置的方法可以做到这一点,还是我需要自己动手?
问问题
3437 次
3 回答
15
是的,你可以这样做:
with multiprocessing.Lock():
...
因为 Lock 是一个上下文管理器。RLock 以及来自线程的 Lock 和 RLock 也是如此。
文档确实声明它是“threading.Lock的克隆”,因此您可以参考“在 with 语句中使用锁、条件和信号量”
[编辑 2020:文档现在明确提到了这一点]
于 2013-08-22T17:05:53.197 回答
1
是的。该文件现在明确指出:
Lock支持上下文管理器协议,因此可以在with语句中使用。
于 2019-12-18T22:33:18.083 回答