Python全局进程锁,文件锁!
Project description
ProcessLock
Python全局进程锁,文件锁!
安装
pip install ProcessLock
使用
from ProcessLock import ProcessLock
p_lock = ProcessLock()
p_lock.acquire()
try:
# doing..
print(p_lock.locked())
finally:
p_lock.release()
用法和普通的锁一样,acquire
、release
、locked
,唯一的区别是这个锁不需要传参,可以通知设置锁的id来在同一机器上获取到同一把锁
进程1
from ProcessLock import ProcessLock
p_lock = ProcessLock(id="lock_name")
p_lock.acquire()
进程2
from ProcessLock import ProcessLock
p_lock = ProcessLock(id="lock_name")
# True
print(p_lock.locked())
# is wait
p_lock.acquire()
在两个进程中因为都指定了锁的id为 lock_name
,所以这两个变量其实是同一把锁,其中一把抢到锁,另外一个会无限等待,直到对方释放锁或者对方所在进程结束.
进程1
from ProcessLock import ProcessLock
p_lock = ProcessLock(id="lock_name")
p_lock.acquire()
进程2
from ProcessLock import ProcessLock
p_nowait_lock = ProcessLock(id="lock_name", wait=False)
# True
print(p_nowait_lock.locked())
# is raise AlreadyLocked Err
p_nowait_lock.acquire()
如果把锁的参数 wait
设置为 False
表示获取锁的时候不进行等待,如果锁不可用直接抛出 AlreadyLocked
异常
这个锁除了是传统意义上的锁的作用,也是文件锁,用途之一是防止不同的程序同时操作同一文件.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
ProcessLock-1.0.0.tar.gz
(9.7 kB
view hashes)
Built Distribution
Close
Hashes for ProcessLock-1.0.0-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 74fffd3d0204f93a6cf6fc8dadc5d268423da7094e634385c0b920c1c1f1bb7e |
|
MD5 | ea5a6fac7a800d33e13eb0b1a58c35b6 |
|
BLAKE2b-256 | 91b29c3f105a9fc26c9ed51f8ffb0a3bf09d524e7047e7b2cd8244ba968c912d |