测试是否已在python中获取锁

时间:2014-07-03 12:07:40

标签: python locking

我有Python 2.7.3。我试图使用Lock对象只允许我的脚本的一个实例一次运行。 我正在使用:

from mutiprocessing import Lock
lock = Lock()
if lock.locked() == False:
    lock.acquire()
    lock.release()

正如我所见here 但是我收到了这个错误:

if lock.locked():
AttributeError: 'Lock' object has no attribute 'locked'

1 个答案:

答案 0 :(得分:5)

没有locked方法 - 有充分的理由。

if lock.locked():
    lock.acquire()
    lock.release()

如果您执行此类代码,则锁定状态可以在if条件和获取的测试之间发生变化。

acquire allows non-blocking operation

if lock.acquire(False):
    #...
    lock.release()

这只会执行if内的代码,如果没有别的东西拿着锁 - 否则,它会完全跳过执行。