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