python - 在python中测试是否已经获取了锁

标签 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'

最佳答案

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

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

如果您编写这样的代码,锁的状态会在 if 条件测试和获取之间发生变化。

acquire allows non-blocking operation :

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

这只会在没有其他东西持有锁的情况下执行 if 中的代码 - 否则,它将完全跳过执行。

关于python - 在python中测试是否已经获取了锁,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24553309/

相关文章:

sqlite数据库连接/锁定问题

c# - 锁定释放 BulkCollector 和 FatalExecutionEngineError 异常

python - 如何在最大池之前填充特征图?

python - mediapipe 实时 3D 坐标打印

python - 将值追加到列表中而不对python进行排序,保持追加顺序

python - uwsgi下带有插件pyramid_exclog的 Pyramid 工程excepiton.log文件无异常日志输出

python - 从python中的字符串中提取日期

sql-server - SQL Server 中的只读锁

c++ - boost interprocess file_lock不适用于多个进程

PHP + mySQL 和并发数据库访问问题