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数据结构之栈、队列及二叉树定义与用法浅析
Dec 27 Python
python+opencv打开摄像头,保存视频、拍照功能的实现方法
Jan 08 Python
Python实用工具FuckIt.py介绍
Jul 02 Python
Python秒算24点实现及原理详解
Jul 29 Python
python通过robert、sobel、Laplace算子实现图像边缘提取详解
Aug 21 Python
pycharm激活码有效到2020年11月底
Sep 18 Python
python标准库os库的函数介绍
Feb 12 Python
Python Tornado批量上传图片并显示功能
Mar 26 Python
Python实现查找数据库最接近的数据
Jun 08 Python
Python3爬虫里关于Splash负载均衡配置详解
Jul 10 Python
如何从csv文件构建Tensorflow的数据集
Sep 21 Python
使用pycharm运行flask应用程序的详细教程
Jun 07 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 管理系统程序中的后门
2009/08/05 PHP
PHP下escape解码函数的实现方法
2010/08/08 PHP
基于php常用正则表达式的整理汇总
2013/06/08 PHP
PHP PDOStatement:bindParam插入数据错误问题分析
2013/11/13 PHP
PHP mail()函数使用及配置方法
2014/01/14 PHP
ThinkPHP模板范围判断输出In标签与Range标签用法详解
2014/06/30 PHP
php事务处理实例详解
2014/07/11 PHP
Laravel框架数据库CURD操作、连贯操作总结
2014/09/03 PHP
PHP设计模式(五)适配器模式Adapter实例详解【结构型】
2020/05/02 PHP
jQuery对象和DOM对象相互转化
2009/04/24 Javascript
提升你网站水平的jQuery插件集合推荐
2011/04/19 Javascript
javascript实现字符串反转的方法
2015/02/05 Javascript
javascript Array 数组常用方法
2015/04/05 Javascript
JS实现获取键盘按下的按键并显示在页面上的方法
2015/11/04 Javascript
javascript中checkbox使用方法简单实例演示
2015/11/17 Javascript
springMVC + easyui + $.ajaxFileUpload实现文件上传注意事项
2017/04/23 Javascript
Vue的移动端多图上传插件vue-easy-uploader的示例代码
2017/11/27 Javascript
使用Vue组件实现一个简单弹窗效果
2018/04/23 Javascript
Angular Material Icon使用详解
2018/11/07 Javascript
使用Angular Cli如何创建Angular私有库详解
2019/01/30 Javascript
你不知道的Vue技巧之--开发一个可以通过方法调用的组件(推荐)
2019/04/15 Javascript
Vue中keep-alive 实现后退不刷新并保持滚动位置
2020/03/17 Javascript
Python常见文件操作的函数示例代码
2011/11/15 Python
Python之eval()函数危险性浅析
2014/07/03 Python
Python构造自定义方法来美化字典结构输出的示例
2016/06/16 Python
python3+PyQt5实现使用剪贴板做复制与粘帖示例
2017/01/24 Python
Python对列表去重的多种方法(四种方法)
2017/12/05 Python
利用pandas向一个csv文件追加写入数据的实现示例
2020/04/23 Python
python 数据库查询返回list或tuple实例
2020/05/15 Python
Python爬虫实现百度翻译功能过程详解
2020/05/29 Python
CSS3教程:background-clip和background-origin
2008/10/17 HTML / CSS
伦敦剧院门票:From The Box Office
2018/06/30 全球购物
信息专业学生学习的自我评价
2014/02/17 职场文书
环保志愿者活动方案
2014/08/14 职场文书
毕业生银行实习自我鉴定
2014/10/14 职场文书
高效课堂教学反思
2016/02/24 职场文书