【问题标题】:named reentrant/recursive lock (RLock) in Python在 Python 中命名为可重入/递归锁 (RLock)
【发布时间】:2024-10-24 06:55:01
【问题描述】:

Python multiprocessing 模块有一个用于可重入/递归锁的类:

from multiprocessing import RLock

l = RLock()
l.acquire()
l.acquire()
l.release()
l.release()

这对于从公共父进程派生的进程非常有用,因此可以共享相同的RLock 对象。但是,对于具有 独立 进程的情况(例如:Web 服务器 + cron 作业),需要一个 命名 锁。不幸的是,RLock() 不接受锁的名称参数。是否有允许执行此类操作的解决方案?

l = RLock('mylock')
l.acquire()
l.release()

【问题讨论】:

  • 我做到了。虽然它带来了一些清晰度,但它并没有回答这个问题。但是,我找到了this 库。 Semaphore 类可能是我正在寻找的。​​span>

标签: python synchronization locking


【解决方案1】:

查看oslo_concurrency.lockutils。它有一个lock 上下文管理器和一个synchronized 装饰器,它们都带有一个名称和其他方便的进程间友好参数。

【讨论】: