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实现得到一个给定类的虚函数
Sep 28 Python
python字符类型的一些方法小结
May 16 Python
在Python的Flask中使用WTForms表单框架的基础教程
Jun 07 Python
详细介绍Python的鸭子类型
Sep 12 Python
Python数据结构与算法之字典树实现方法示例
Dec 13 Python
把JSON数据格式转换为Python的类对象方法详解(两种方法)
Jun 04 Python
python爬虫 爬取58同城上所有城市的租房信息详解
Jul 30 Python
Python 安装 virturalenv 虚拟环境的教程详解
Feb 21 Python
jupyter notebook插入本地图片的实现
Apr 13 Python
python函数调用,循环,列表复制实例
May 03 Python
Pycharm配置lua编译环境过程图解
Nov 28 Python
Django数据统计功能count()的使用
Nov 30 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
解析php中array_merge与array+array的区别
2013/06/21 PHP
用PHP去掉文件头的Unicode签名(BOM)方法
2017/06/22 PHP
laravel自定义分页效果
2017/07/23 PHP
THINKPHP3.2使用soap连接webservice的解决方法
2017/12/13 PHP
PHP实现的大文件切割与合并功能示例
2018/04/10 PHP
解决tp5在nginx下修改配置访问的问题
2019/10/16 PHP
客户端脚本中常常出现的一些问题和调试技巧
2007/01/09 Javascript
javascript+mapbar实现地图定位
2010/04/09 Javascript
对new functionName()定义一个函数的理解
2014/05/22 Javascript
javascript实现行拖动的方法
2015/05/27 Javascript
AngularJS基础 ng-cloak 指令简单示例
2016/08/01 Javascript
Spring shiro + bootstrap + jquery.validate 实现登录、注册功能
2017/06/02 jQuery
bootstrap table实现x-editable的行单元格编辑及解决数据Empty和支持多样式问题
2017/08/10 Javascript
JavaScript中Object基础内部方法图
2018/02/05 Javascript
微信小程序修改swiper默认指示器样式的实例代码
2018/07/18 Javascript
Vue CLI3 开启gzip压缩文件的方式
2018/09/30 Javascript
jQuery实现表格的增、删、改操作示例
2019/01/27 jQuery
基于Fixed定位的框选功能的实现代码
2019/05/13 Javascript
JavaScript的查询机制LHS和RHS解析
2019/08/16 Javascript
解决React在安装antd之后出现的Can't resolve './locale'问题(推荐)
2020/05/03 Javascript
django开发教程之利用缓存文件进行页面缓存的方法
2017/11/10 Python
python中int与str互转方法
2018/07/02 Python
Python 将Matrix、Dict保存到文件的方法
2018/10/30 Python
python实现猜数字游戏
2020/03/25 Python
python 实现多维数组(array)排序
2020/02/28 Python
python中os包的用法
2020/06/01 Python
html5.2 dialog简介详解
2018/02/27 HTML / CSS
捷克浴室和厨房设备购物网站:SIKO
2018/08/11 全球购物
六一儿童节演讲稿
2014/05/23 职场文书
低碳环保标语
2014/06/12 职场文书
关于感恩的演讲稿500字
2014/08/26 职场文书
2014幼儿园家长工作总结
2014/11/10 职场文书
2014工程部年度工作总结
2014/12/17 职场文书
校运会加油稿大全
2015/07/22 职场文书
springboot临时文件存储目录配置方式
2021/07/01 Java/Android
Netflix《海贼王》真人版剧集多张片场照曝光
2022/04/04 日漫