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模板的使用方法(图文)
Nov 04 Python
python根据出生年份简单计算生肖的方法
Mar 27 Python
使用C语言扩展Python程序的简单入门指引
Apr 14 Python
Python字符串切片操作知识详解
Mar 28 Python
对python3 Serial 串口助手的接收读取数据方法详解
Jun 12 Python
Python 如何优雅的将数字转化为时间格式的方法
Sep 26 Python
Python Django模板之模板过滤器与自定义模板过滤器示例
Oct 18 Python
使用Python中tkinter库简单gui界面制作及打包成exe的操作方法(二)
Oct 12 Python
python基于exchange函数发送邮件过程详解
Nov 06 Python
python中pandas.read_csv()函数的深入讲解
Mar 29 Python
对Keras自带Loss Function的深入研究
May 25 Python
利用Python第三方库实现预测NBA比赛结果
Jun 21 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多用户计数器代码
2007/03/11 PHP
php5中类的学习
2008/03/28 PHP
PHP加密函数 Javascript/Js 解密函数
2013/09/23 PHP
php运行时动态创建函数的方法
2015/03/16 PHP
WordPress中转义HTML与过滤链接的相关PHP函数使用解析
2015/12/22 PHP
javascript jQuery插件练习
2008/12/24 Javascript
关于flash遮盖div浮动层的解决方法
2010/07/17 Javascript
纯JavaScript基于notie.js插件实现消息提示特效
2016/01/18 Javascript
JavaScript弹窗基础篇
2016/04/27 Javascript
js和C# 时间日期格式转换的简单实例
2016/05/28 Javascript
AngularJS路由Ui-router模块用法示例
2017/05/29 Javascript
vue 自定义提示框(Toast)组件的实现代码
2018/08/17 Javascript
在vue项目中引用Iview的方法
2018/09/14 Javascript
移动端吸顶fixbar的解决方案详解
2019/07/17 Javascript
Vue 实现点击空白处隐藏某节点的三种方式(指令、普通、遮罩)
2019/10/23 Javascript
JavaScript之Blob对象类型的具体使用方法
2019/11/29 Javascript
vue+echarts+datav大屏数据展示及实现中国地图省市县下钻功能
2020/11/16 Javascript
python使用7z解压apk包的方法
2015/04/18 Python
Python3里的super()和__class__使用介绍
2015/04/23 Python
在Python中使用AOP实现Redis缓存示例
2017/07/11 Python
python3实现公众号每日定时发送日报和图片
2018/02/24 Python
python购物车程序简单代码
2018/04/18 Python
Python排序算法之选择排序定义与用法示例
2018/04/29 Python
python实现抖音点赞功能
2019/04/07 Python
Python字节单位转换(将字节转换为K M G T)
2021/03/02 Python
一篇文章带你学习CSS3图片边框
2020/11/04 HTML / CSS
简单聊聊H5的pushState与replaceState的用法
2018/04/03 HTML / CSS
驴妈妈旅游网:中国新型的B2C旅游电子商务网站
2016/08/16 全球购物
个人自我鉴定
2013/11/07 职场文书
全国优秀教师事迹材料
2014/08/26 职场文书
报效祖国演讲稿
2014/09/15 职场文书
2014年幼儿园国庆主题活动方案
2014/09/16 职场文书
神州牡丹园的导游词
2019/11/20 职场文书
Python实现简繁体转换
2021/06/07 Python
MySQL 数据 data 基本操作
2022/05/04 MySQL
MySQL数据库Innodb 引擎实现mvcc锁
2022/05/06 MySQL