Python(进程锁)

1. 为什么要使用进程锁

1.1 	当使用多进程对同一共享资源进行使用时,可能会出现各种问题,例如数据写入文件时顺序错误、当进程需要依
	次修改同一个数据时,第一个进程还未完成修改,第二个进程就读取未经修改的数据进行修改。

2. 如何实现进程锁

2.1
import multiprocessing
def work(f, item, lock):
    # 2). 开始此任务前,为防止数据写入顺序混乱,对此任务进行加锁
    lock.acquire()
    try:
        with open(f, 'a+') as f:
            f.write("a %s task\n" % (item))
    except Exception as e:
        print("产生异常...")
    finally:
    #3). 完成此任务后对此任务进行解锁
        lock.release()

def main():
    # 1). 实例化一个进程锁
    lock = multiprocessing.Lock()

    filename = 'doc/my.log'
    processes = []
    for i in range(4):
        p1 = multiprocessing.Process(target=work, args=(filename, i, lock))
        p1.start()
        processes.append(p1)

    [process.join() for process in  processes]

if __name__ == '__main__':
    main()

猜你喜欢

转载自blog.csdn.net/qq_43281189/article/details/86602614