函数签名
fcntl.flock(f.fileno(), operation)
operation 的操作包括以下选项:
LOCK_NB可以同LOCK_SH或LOCK_NB进行按位或(|)运算操作
代码示例
# -*- coding: utf-8 -*- import fcntl import time def lock(f): fcntl.flock(f, fcntl.LOCK_EX | fcntl.LOCK_NB) def un_lock(f): fcntl.flock(f, fcntl.LOCK_UN) from multiprocessing import Process def open_file(): f = open('test.txt', 'r') lock(f) # 加锁 print(f.read()) time.sleep(3) un_lock(f) f.close() Process(target=open_file).start() Process(target=open_file).start()
多进程情况下,如果一个进程给文件加锁了,另一个进程会报错,抛出异常