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环形单链表的约瑟夫问题详解
Sep 27 Python
解决python xlrd无法读取excel文件的问题
Dec 25 Python
将python图片转为二进制文本的实例
Jan 24 Python
Python实现个人微信号自动监控告警的示例
Jul 03 Python
python基于paramiko将文件上传到服务器代码实现
Jul 08 Python
基于Python实现ComicReaper漫画自动爬取脚本过程解析
Nov 11 Python
OpenCV4.1.0+VS2017环境配置的方法步骤
Jul 09 Python
Kmeans均值聚类算法原理以及Python如何实现
Sep 26 Python
Python从MySQL数据库中面抽取试题,生成试卷
Jan 14 Python
如何利用pygame实现打飞机小游戏
May 30 Python
python面向对象版学生信息管理系统
Jun 24 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程序的国际化实现方法(利用gettext)
2011/08/14 PHP
php不使用插件导出excel的简单方法
2014/03/04 PHP
解决laravel查询构造器中的别名问题
2019/10/17 PHP
文本加密解密
2006/06/23 Javascript
JQuery切换显示的效果实例代码
2013/02/27 Javascript
深入浅析javascript立即执行函数
2015/10/23 Javascript
JS实现的表格行鼠标点击高亮效果代码
2015/11/27 Javascript
深入浅出ES6之let和const命令
2016/08/25 Javascript
jquery+css实现下拉列表功能
2017/09/03 jQuery
Angular入口组件(entry component)与声明式组件的区别详解
2018/04/09 Javascript
使用vue-cli导入Element UI组件的方法
2018/05/16 Javascript
解决vue-cli项目webpack打包后iconfont文件路径的问题
2018/09/01 Javascript
Angular4.x Event (DOM事件和自定义事件详解)
2018/10/09 Javascript
vue实现弹幕功能
2019/10/25 Javascript
webpack.DefinePlugin与cross-env区别详解
2020/02/23 Javascript
浅谈Vue2.4.0 $attrs与inheritAttrs的具体使用
2020/03/08 Javascript
vue使用video插件vue-video-player的示例
2020/10/03 Javascript
使用python实现strcmp函数功能示例
2014/03/25 Python
Python实现的井字棋(Tic Tac Toe)游戏示例
2018/01/31 Python
Python多进程fork()函数详解
2019/02/22 Python
Python3几个常见问题的处理方法
2019/02/26 Python
python正则-re的用法详解
2019/07/28 Python
使用pip安装python库的多种方式
2019/07/31 Python
Laravel框架表单验证格式化输出的方法
2019/09/25 Python
Python 生成VOC格式的标签实例
2020/03/10 Python
在django中使用post方法时,需要增加csrftoken的例子
2020/03/13 Python
MATLAB数学建模之画图汇总
2020/07/16 Python
Python字符串及文本模式方法详解
2020/09/10 Python
采购部主管岗位职责
2014/01/01 职场文书
工厂仓管员岗位职责范本
2014/07/17 职场文书
委托书的写法
2014/08/30 职场文书
放牛班的春天观后感
2015/06/01 职场文书
校运会班级霸气口号
2015/12/24 职场文书
Python数据可视化之绘制柱状图和条形图
2021/05/25 Python
html css3不拉伸图片显示效果
2021/06/07 HTML / CSS
Spring整合Mybatis的全过程
2021/06/28 Java/Android