python进阶--多线程,锁的问题

1、先了解一下锁的理论知识。
同步
就是协同步调,按预定的先后次序进行运行,"同"字,协同、协助、互相配合。如进程、线程同步,可理解为进程或线程A和B一块配合,A执行到一定程度时,要依赖B的某个结果,停止,示意B执行,再将结果给A,A再继续操作

互斥锁
线程同步能够保证多个线程安全访问竞争资源,最简单的同步机制就引入互斥锁。
互斥锁为资源引入一个状态:锁定/非锁定。
某个线程要更改共享数据时,先将其锁定,此时资源的状态为“锁定”,其余线程不能修改,直到该线程释放资源,将资源的状态变成“非锁定”,其余线程方再次锁定该资源。互斥锁保证了每次只有一个线程进行写入操作,从而保证了多线程情况下数据的更高的正确性。
2、在threading模块中,定义了Lock类,可以来处理锁定:
#创建锁
Q1=threading.Lock()
锁定
Q1.acquire()
释放
Q1.release()

如下为不上锁的脚本。运行后,任务之间会来回切换,互相争抢资源。
在这里插入图片描述
3、来看一下上锁释放锁的脚本。如果是多个线程,当任务开始的时候,会争相抢夺这个锁,谁先抢到,谁先上锁,任务执行完,释放锁,下一个任务继续执行。避开了争资源的情况。
在这里插入图片描述
接上面的脚本。
在这里插入图片描述
加了锁之后进程会变慢,慢就慢在加锁释放锁的这些环节。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值