Pythonmultiprocessing模块有一个可重入/递归锁类:

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()

最佳答案

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

08-16 06:21