python互斥锁
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了python互斥锁,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含714字,纯文字阅读大概需要2分钟。
内容图文
- 互斥锁Mutex的使用
多个线程处理共享数据,数据会出现问题:
2.7之前每100指令切换一次GIL锁,线程就会sleep,线程会把前100条处理指令存放在CPU缓存内,切换GIL锁后放入另外一个线程再次处理同一条共享数据,如果我这条共享数据需要101条指令才能处理完,那么这块数据结果就会出现问题,当所有执行线程轮一边后在回来,CPU会取出第一次缓存区的数据,执行第一条数据的101条指令,结果会覆盖掉共享数据,所以的出的结果并不是我们想得到的。
决上述问题,我们就要使用“互斥锁”:
互斥锁:保证锁定同一个线程,修改这个完整的数据,是用户程序自己的锁。
使用情况:因为使用时暂用时间,影响其他线程等待,所以尽量修改处理块的数据后立即释放锁。
互斥锁模拟
import threading,time def run(n): # 获取一把锁 lock.acquire() # 设置全局变量 global num num += 1 # 释放一把锁 lock.release() # 互斥锁实例化 lock = threading.Lock() num = 0 # 循环50次 for i in range(50): # 生成一个线程实例target=目标,args=参数 t = threading.Thread(target=run,args=("t-%s"%i,)) # 启动线程 调用run t.start() # 执行结果添加到列表 t_objs.append(t) print("num",num)
原文:https://www.cnblogs.com/pyxuexi/p/13942571.html
内容总结
以上是互联网集市为您收集整理的python互斥锁全部内容,希望文章能够帮你解决python互斥锁所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。
来源:【匿名】