filelock对文件加锁
- 需求:给文件加锁,防止多进程同时操作统一文件。
- 方法:python中的fcntl模块
# -*- coding: utf-8 -*-
import os
import time
from multiprocessing import Pool
import fcntl
def demo(i):
f = open('demo.txt', 'a')
fcntl.flock(f, fcntl.LOCK_EX)
time.sleep(2) # 代表写入操作
f.write('{} process write content
'.format(i))
fcntl.flock(f, fcntl.LOCK_UN)
print('{} process free lock
'.format(os.getpid()))
if __name__ == '__main__':
p = Pool(5)
for i in range(10):
p1 = p.apply_async(demo, args=(i,))
p.close()
p.join()