python - 我可以在 with 语句中获取 multiprocessing 的 Lock 吗?

标签 python multiprocessing with-statement

如果进程无法解锁multiprocessing 锁,就会发生可怕的事情。为了尽量减少发生这种情况的可能性,我想获取 with block 中的锁。有什么内置方法可以做到这一点,还是我需要自己动手?

最佳答案

是的,你可以这样做:

mylock = multiprocessing.Lock()

with mylock:
    ...

因为 Lock 是一个上下文管理器。 RLock 也是如此,线程中的 Lock 和 RLock 也是如此。

documentation确实声明它是“threading.Lock 的克隆”,因此您可以引用 "Using locks, conditions, and semaphores in the with statement"

[编辑 2020:documentation now mentions this explicitly ]

关于python - 我可以在 with 语句中获取 multiprocessing 的 Lock 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18386616/

相关文章:

python - 如何在python中停止udp套接字线程?

python - 通过整数位置和列标签获取标量(混合索引)

Python:Configparser - 转义换行符?

删除连续的重复条目

python - 如何使用 "with open"语句打开多个文件(事先未知的文件数)?

python - 是否有 numpy.where() 等效于行操作?

Python覆盖率看不到配置文件

python - 从主脚本独立运行外部 python 脚本

python - 类型错误 : 'MapResult' object is not iterable using pathos. 多处理

python - 在 Python 2.5 中使用 with 语句 : SyntaxError?