filelock对文件加锁

filelock对文件加锁

  1. 需求:给文件加锁,防止多进程同时操作统一文件。
  2. 方法: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()
posted @ 2020-12-07 23:20  疯狂列表推导式  阅读(277)  评论(0编辑  收藏  举报