Python多进程的lock机制 !

本文介绍了Python多进程中使用Lock来解决共享资源访问冲突的问题。通过示例代码展示了无Lock时,多个进程并发访问导致的资源错误,以及使用Lock如何确保资源的正确串行访问,避免写覆盖现象。
摘要由CSDN通过智能技术生成

一 前言

我们知道Python中多进程是相互执行互不干扰的,但是如果多进程之间需要对同一资源对象进行操作或者多个进程之间有相互依赖的,那就需要一个共享变量供多进程使用。Python multiprocessing 多进程之间相互协调的方式有如下几种: Lock:锁,Queue:队列, Semaphore:信号量 ,Event:事件,Pipe:管道 。

后续文章会逐个介绍这几种方式,本文学习 Lock:锁 。

Python资源共享群:484031800

 

二 实践

当多个进程需要访问共享资源的时候,Lock可以用来避免访问的冲突。思考一个场景无事务状态下共同访问某个内存变量或者多个进程要访问读写同一个文件。

初始化lock很简单:

lock = Lock() 即可创建一个锁对象,

该对象为全局对象,能被所有的子进程使用。

 

2.1 no lock

 
 

# encoding: utf-8 """ author: yangyi@youzan.com time: 2019/8/10 5:48 PM func: """ from multiprocessing import Process, Value, Lock def sub(num): num.value += 1 if __name__ == '__main__': lock = Lock() # 创建锁对象 val = Value('i', 0) # Value是通过共享内存的方式共享数据 初始值 val 为0 proc = [Process(target=sub, args=(val,)) for i in xrange(

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值