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.1.tar.gz
(9.9 kB
view hashes)
Built Distribution
Close
Hashes for ProcessLock-1.0.1-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | fe8d4d07cfaad3c4f9e8d09169f538d99d04bb1a2f189cbb3b9b22ee077ac740 |
|
MD5 | dc95c2763908479758f4c6573117caea |
|
BLAKE2b-256 | da74e1b2cf40df54541fafb44cfcdce6a01d55573d97d1d319708faec8ae3afd |