适用于Linux和Windows的基于文件的Python锁
项目描述
Locket实现了一个基于文件的锁,多个进程可以使用它,前提是它们使用相同的路径。
import locket
# Wait for lock
with locket.lock_file("path/to/lock/file"):
perform_action()
# Raise LockError if lock cannot be acquired immediately
with locket.lock_file("path/to/lock/file", timeout=0):
perform_action()
# Raise LockError if lock cannot be acquired after thirty seconds
with locket.lock_file("path/to/lock/file", timeout=30):
perform_action()
# Without context managers:
lock = locket.lock_file("path/to/lock/file")
try:
lock.acquire()
perform_action()
finally:
lock.release()
锁的行为在很大程度上类似于标准库中threading模块的Lock实例(非重入锁)。具体来说,它们的行为是
锁由被锁定的文件唯一标识,无论是同一进程还是不同进程。
锁处于锁定或解锁状态。
当锁处于解锁状态时,调用acquire()会立即返回并改变锁状态为锁定。
当锁处于锁定状态时,调用acquire()会阻塞,直到锁状态变为解锁,或者超时时间到期。
如果进程持有锁,则该进程的任何线程都可以调用release()来将状态更改为解锁。
在未解锁的锁上调用release()会引发LockError。
fork后的锁的行为是未定义的。
安装
pip install locket
项目详情
下载文件
下载适用于您平台的文件。如果您不确定选择哪个,请了解有关安装包的更多信息。
源代码发行版
locket-1.0.0.tar.gz (4.3 kB 查看哈希值)
构建发行版
locket-1.0.0-py2.py3-none-any.whl (4.4 kB 查看哈希值)