Python Threading 线程/互斥锁/死锁/GIL锁


Posted in Python onJuly 21, 2019

导入线程包

import threading

准备函数线程,传参数

t1 = threading.Thread(target=func,args=(args,))

类继承线程,创建线程对象

class MyThread(threading.Thread)
  def run(self):
    pass
if __name__ == "__main__":
  t = MyThread()
  t.start()

线程共享全面变量,但在共享全局变量时会出现数据错误问题

使用 threading 模块中的 Lock 类,添加互斥锁可以解决线程共享全局变量问题

# 创建锁
mutex = threading.Lock()
# 锁定
mutex.acquire()
# 释放锁
mutex.release()

互斥锁可能导致死锁问题

在线程间共享多个资源的时候,如果两个线程分别占有一部分资源,并且同时在等待对方的资源时,就会造成死锁.

解决方案:

1.银行家算法:程序设计时想好锁定与释放的时空关系
2.添加超时等待

Python 中 多线程的 GIL 全局解释器锁

GIL是C语言版本python解释器的遗留问题
GIL锁使得python中同一时刻其实只有一个线程在运行
但是多线程毕竟还是闭单线程快,这是因为在一个线程IO阻塞的时间段,其他线程可以运行
GIL 锁和互斥锁是不一样的,GIL锁是锁线程的,互斥锁是锁线程?仁挛竦?互斥锁是开发者自己写的,GIL锁来源与C版本python解释器

解决GIL的方法

1.使用java版的python解释器
2.使用其他语言代码,完成该部分

总结

以上所述是小编给大家介绍的Python Threading 线程/互斥锁/死锁/GIL锁,希望对大家有所帮助,如果大家有任何疑问欢迎给我留言,小编会及时回复大家的!

Python 相关文章推荐
详解Python的Django框架中Manager方法的使用
Jul 21 Python
恢复百度云盘本地误删的文件脚本(简单方法)
Oct 21 Python
Python的numpy库中将矩阵转换为列表等函数的方法
Apr 04 Python
python os用法总结
Jun 08 Python
详解Django+Uwsgi+Nginx的生产环境部署
Jun 25 Python
python3.6.3转化为win-exe文件发布的方法
Oct 31 Python
在python中使用with打开多个文件的方法
Jan 07 Python
centos 安装Python3 及对应的pip教程详解
Jun 28 Python
Django中的AutoField字段使用
May 18 Python
python 爬取百度文库并下载(免费文章限定)
Dec 04 Python
python asyncio 协程库的使用
Jan 21 Python
Python内置包对JSON文件数据进行编码和解码
Apr 12 Python
详解Django模版中加载静态文件配置方法
Jul 21 #Python
django数据库自动重连的方法实例
Jul 21 #Python
django使用django-apscheduler 实现定时任务的例子
Jul 20 #Python
python 自定义装饰器实例详解
Jul 20 #Python
Python 列表去重去除空字符的例子
Jul 20 #Python
python列表每个元素同增同减和列表元素去空格的实例
Jul 20 #Python
用Python配平化学方程式的方法
Jul 20 #Python
You might like
Discuz板块横排显示图片的实现方法
2007/05/28 PHP
PHP实用小技巧之调用录像的方法
2019/12/05 PHP
msn上的tab功能Firefox对childNodes处理的一个BUG
2008/01/21 Javascript
获取下拉列表框的值是数组,split,$.inArray示例
2013/11/13 Javascript
jquery实现显示已选用户
2014/07/21 Javascript
JS通过Cookie判断页面是否为首次打开
2016/02/05 Javascript
jQuery实现花式轮播之圣诞节礼物传送效果
2016/12/25 Javascript
ES6新特性一: let和const命令详解
2017/04/20 Javascript
Vuejs实现带样式的单文件组件新方法
2017/05/02 Javascript
Js利用Canvas实现图片压缩功能
2017/09/13 Javascript
jquery animate动画持续运动的实例
2017/11/29 jQuery
webpack+vuex+axios 跨域请求数据的示例代码
2018/03/06 Javascript
vue.js做一个简单的编辑菜谱功能
2018/05/08 Javascript
小程序关于请求同步的总结
2019/05/05 Javascript
轻松解决JavaScript定时器越走越快的问题
2019/05/13 Javascript
nodejs的安装使用与npm的介绍
2019/09/11 NodeJs
js实现计时器秒表功能
2019/12/16 Javascript
在antd Form表单中select设置初始值操作
2020/11/02 Javascript
python实现二维码扫码自动登录淘宝
2016/12/27 Python
python微信公众号之关键词自动回复
2018/06/15 Python
2019 Python最新面试题及答案16道题
2019/04/11 Python
pytorch自定义二值化网络层方式
2020/01/07 Python
Win10下安装并使用tensorflow-gpu1.8.0+python3.6全过程分析(显卡MX250+CUDA9.0+cudnn)
2020/02/17 Python
cookies应对python反爬虫知识点详解
2020/11/25 Python
您的健身减肥和健康饮食专家:vitafy
2017/06/06 全球购物
大学生求职简历的自我评价
2013/10/14 职场文书
青春演讲稿范文
2014/05/08 职场文书
企业安全生产承诺书
2014/05/22 职场文书
网吧七夕活动策划方案
2014/08/31 职场文书
优秀员工推荐材料
2014/12/20 职场文书
电影建国大业观后感
2015/06/01 职场文书
少年雷锋观后感
2015/06/10 职场文书
幼儿园开学温馨提示
2015/07/15 职场文书
2019最新激励员工口号大全!
2019/06/28 职场文书
恶魔之树最顶端的三颗果实 震震果实上榜,第一可以制造岩浆
2022/03/18 日漫
MySQL实现配置主从复制项目实践
2022/03/31 MySQL