在 Python 进程之间共享锁
当尝试在多个进程之间使用锁时,您可能会遇到错误,“锁定对象应该只通过继承在进程之间共享。”
要解决这个问题,有两种主要方法:
使用Manager
此方法涉及创建 Manager 对象并传递 Manager.Lock():
from multiprocessing import Manager ... m = Manager() l = m.Lock()
但是,使用 Manager 需要一个额外的进程来托管 Manager 服务器并通过 IPC 进行通信。
在池中传递锁创建
另一种方法是使用初始化器关键字在池创建时传递常规 multiprocessing.Lock()参数:
def init(l): global lock lock = l l = multiprocessing.Lock() pool = multiprocessing.Pool(initializer=init, initargs=(l,))
此方法使锁实例在所有子进程中全局化。请注意,这种方法消除了对偏函数的需要。
通过采用其中一种技术,您可以在 Python 进程之间有效地共享锁,从而允许协调访问共享资源。
免责声明: 提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发到邮箱:[email protected] 我们会第一时间内为您处理。
Copyright© 2022 湘ICP备2022001581号-3