在Python中命名为reentrant / recursive lock(RLock)

时间:2015-05-29 16:11:10

标签: python synchronization locking

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

1 个答案:

答案 0 :(得分:0)

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