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()

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值