”工欲善其事,必先利其器。“—孔子《论语.录灵公》
首页 > 编程 > 如何在 Python 进程之间共享锁

如何在 Python 进程之间共享锁

发布于2024-11-08
浏览:284

How to Share Locks Between Python Processes

在 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 进程之间有效地共享锁,从而允许协调访问共享资源。

版本声明 本文转载于:1729132333如有侵犯,请联系[email protected]删除
最新教程 更多>

免责声明: 提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发到邮箱:[email protected] 我们会第一时间内为您处理。

Copyright© 2022 湘ICP备2022001581号-3