多进程把文件当做锁使用(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

你可能感兴趣的:(python,开发语言)