一个提供有用锁的Python包
项目描述
Fasteners
线程和进程的跨平台锁。
🔩 安装
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 查看散列值)
关闭
fasteners-0.19.tar.gz 的散列值
算法 | 散列摘要 | |
---|---|---|
SHA256 | b4f37c3ac52d8a445af3a66bce57b33b5e90b97c696b7b984f530cf8f0ded09c |
|
MD5 | e957e11c2e00629e44166e1d2881798e |
|
BLAKE2b-256 | 5fd4e834d929be54bfadb1f3e3b931c38e956aaa3b235a46a3c764c26c774902 |
关闭
fasteners-0.19-py3-none-any.whl 的散列值
算法 | 散列摘要 | |
---|---|---|
SHA256 | 758819cb5d94cdedf4e836988b74de396ceacb8e2794d21f82d131fd9ee77237 |
|
MD5 | 0e45841c638ae0fb3c228844904007f2 |
|
BLAKE2b-256 | 61bffd60001b3abc5222d8eaa4a204cd8c0ae78e75adc688f33ce4bf25b7fafa |