跳转到主要内容

适用于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 查看哈希值)

上传时间 Python 2 Python 3

由以下支持

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF 赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误记录 StatusPage StatusPage 状态页面