多进程把文件当做锁使用(python)

#test.py
import fcntl
import os
import time
def acquire_lock(filename):
    fd = os.open(filename, os.O_RDWR | os.O_CREAT)
    try:
        fcntl.flock(fd, fcntl.LOCK_EX | fcntl.LOCK_NB)
    except BlockingIOError:
        print("File is locked by another process.")
        os.close(fd)
        return None
    return fd

def release_lock(fd):
    if fd is not None:
        fcntl.flock(fd, fcntl.LOCK_UN)
        os.close(fd)


filename = './**/myLockfile'
while True:
    fd = acquire_lock(filename)
    if fd is not None:
        print("Get lock.")
        # 执行需要对文件的操作
        # ... 
        time.sleep(10)       
        release_lock(fd)

这样多进程操作共享资源时可以使用锁保护

例如,可见两个进程互相独占锁的过程:

terminal0:python3  test.py

terminal1:python3 test.py

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值