跳转到主要内容

一个提供有用锁的Python包

项目描述

Fasteners

Documentation status Downloads Latest version

线程和进程的跨平台锁。

🔩 安装

pip install fasteners

🔩 使用

进程锁具有与threading.Lock线程相同的API

import fasteners
import threading

lock = threading.Lock()                                 # for threads
lock = fasteners.InterProcessLock('path/to/lock.file')  # for processes

with lock:
    ... # exclusive access

# or alternatively    

lock.acquire()
... # exclusive access
lock.release()

读写锁具有类似的API,对线程或进程都相同

import fasteners

rw_lock = fasteners.ReaderWriterLock()                                 # for threads
rw_lock = fasteners.InterProcessReaderWriterLock('path/to/lock.file')  # for processes

with rw_lock.write_lock():
    ... # write access

with rw_lock.read_lock():
    ... # read access

# or alternatively

rw_lock.acquire_read_lock()
... # read access
rw_lock.release_read_lock()

rw_lock.acquire_write_lock()
... # write access
rw_lock.release_write_lock()

🔩 概述

Python 标准库提供了一组线程锁(包括可重入锁和非可重入锁,详见下文)。Fasteners 扩展了这一功能,并为进程提供了锁,同时为线程和进程提供了读写锁。本概述中使用的术语定义可以在术语表中找到。

锁的具体细节如下

进程锁

fasteners.InterProcessLock 在类 Unix 系统上使用 fcntl,在 Windows 上使用 msvc _locking。因此,如果跨平台使用,则保证其功能的交集

可重入 强制
fcntl
_locking
fasteners.InterProcessLock

fasteners.InterProcessReaderWriterLock 也在类 Unix 系统上使用 fcntl,在 Windows 上使用 LockFileEx。它们的功能如下

可重入 强制 可升级 优先级
fcntl 读取器
LockFileEx 读取器
fasteners.InterProcessReaderWriterLock 读取器

线程锁

Fasteners 不提供简单的线程锁,但为了比较,请注意 threading 模块提供了可重入锁和非可重入锁

可重入 强制
threading.Lock
threading.RLock

目前 fasteners.ReaderWriterLock 的功能如下

可重入 强制 可升级 优先级
fasteners.ReaderWriterLock 写入器

如果您的线程是通过标准库 threading 模块以外的其他方式创建的(例如 eventlet),则可能需要向 ReaderWriterLock 提供相应的线程标识和同步函数。

项目详情


下载文件

下载您平台的文件。如果您不确定选择哪个,请了解更多关于 安装包 的信息。

源代码发行版

fasteners-0.19.tar.gz (24.8 kB 查看散列值)

上传时间 源代码

构建发行版

fasteners-0.19-py3-none-any.whl (18.7 kB 查看散列值)

上传时间 Python 3

由以下支持

AWSAWS 云计算和安全赞助商 DatadogDatadog 监控 FastlyFastly CDN GoogleGoogle 下载分析 MicrosoftMicrosoft PSF赞助商 PingdomPingdom 监控 SentrySentry 错误日志 StatusPageStatusPage 状态页面