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
装饰器,这两个都有一个名称和其他方便的进程间友好参数。