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 18 Python
Python3.2模拟实现webqq登录
Feb 15 Python
Python中字典的setdefault()方法教程
Feb 07 Python
Python基于百度AI的文字识别的示例
Apr 21 Python
Python使用pyserial进行串口通信的实例
Jul 02 Python
对Python函数设计规范详解
Jul 19 Python
Python函数的定义方式与函数参数问题实例分析
Dec 26 Python
pytorch使用 to 进行类型转换方式
Jan 08 Python
Python Tensor FLow简单使用方法实例详解
Jan 14 Python
Python实现队列的方法示例小结【数组,链表】
Feb 22 Python
如何理解python对象
Jun 21 Python
python 批量下载bilibili视频的gui程序
Nov 20 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的ASP防火墙
2006/10/09 PHP
ezSQL PHP数据库操作类库
2010/05/16 PHP
php下连接mssql2005的代码
2011/01/17 PHP
php中让上传的文件大小在上传前就受限制的两种解决方法
2013/06/24 PHP
php获取目录所有文件并将结果保存到数组(实例)
2013/10/25 PHP
php 利用socket发送HTTP请求(GET,POST)
2015/08/24 PHP
php实现页面纯静态的实例代码
2017/06/21 PHP
让iframe框架网页在任何浏览器下自动伸缩
2006/08/18 Javascript
JS类的封装及实现代码
2009/12/02 Javascript
使用基于jquery的gamequery插件做JS乒乓球游戏
2011/07/31 Javascript
javascript学习笔记(八) js内置对象
2012/06/19 Javascript
异步动态加载js与css文件的js代码
2013/09/15 Javascript
为Javascript中的String对象添加去除左右空格的方法(示例代码)
2013/11/30 Javascript
不要使用jQuery触发原生事件的方法
2014/03/03 Javascript
JavaScript控制table某列不显示的方法
2015/03/16 Javascript
jquery实现弹出层登录和全屏层注册特效
2015/08/28 Javascript
javascript基于原型链的继承及call和apply函数用法分析
2016/12/15 Javascript
使用bat打开多个cmd窗口执行gulp、node
2017/02/17 Javascript
BootStrap入门学习第一篇
2017/08/28 Javascript
vue表单验证你真的会了吗?vue表单验证(form)validate
2019/04/07 Javascript
Vue+Typescript中在Vue上挂载axios使用时报错问题
2019/08/07 Javascript
python扫描proxy并获取可用代理ip的实例
2017/08/07 Python
python发送告警邮件脚本
2018/09/17 Python
Python装饰器限制函数运行时间超时则退出执行
2019/04/09 Python
Python分析彩票记录并预测中奖号码过程详解
2019/07/09 Python
Python替换月份为英文缩写的实现方法
2019/07/15 Python
python修改字典键(key)的方法
2019/08/05 Python
Python django框架输入汉字,数字,字符生成二维码实现详解
2019/09/24 Python
HTML5拖拽功能实现的拼图游戏
2018/07/31 HTML / CSS
localStorage的过期时间设置的方法详解
2018/11/26 HTML / CSS
通往英国高街的商店橱窗:Down Your High Street
2020/07/19 全球购物
C#里面可以避免一个类被其他类继承么?如何?
2013/09/26 面试题
Java Servlet的主要功能和作用是什么
2014/02/14 面试题
大学生毕业自荐信
2013/10/10 职场文书
党员公开承诺书
2014/03/25 职场文书
员工规章制度范本
2015/08/07 职场文书