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获取本机外网ip的方法
Apr 15 Python
在Linux系统上通过uWSGI配置Nginx+Python环境的教程
Dec 25 Python
Python每天必学之bytes字节
Jan 28 Python
python smtplib模块实现发送邮件带附件sendmail
May 22 Python
Python中list循环遍历删除数据的正确方法
Sep 02 Python
使用tensorflow显示pb模型的所有网络结点方式
Jan 23 Python
使用python从三个角度解决josephus问题的方法
Mar 27 Python
Jupyter Notebook 实现正常显示中文和负号
Apr 24 Python
使用python实现下载我们想听的歌曲,速度超快
Jul 09 Python
Python环境使用OpenCV检测人脸实现教程
Oct 19 Python
Python下载商品数据并连接数据库且保存数据
Mar 31 Python
Python 避免字典和元组的多重嵌套问题
Jul 15 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
CentOS下与Apache连接的PHP多版本共存方案实现详解
2015/12/19 PHP
Zend Framework动作助手(Zend_Controller_Action_Helper)用法详解
2016/03/05 PHP
phpStudy配置多站点多域名和多端口的方法
2017/09/01 PHP
基于jQuery的360图片展示实现代码
2012/06/14 Javascript
异步javascript的原理和实现技巧介绍
2012/11/08 Javascript
JS将表单导出成EXCEL的实例代码
2013/11/11 Javascript
浅析JavaScript中的类型和对象
2013/11/29 Javascript
jQuery实现按钮的点击 全选/反选 单选框/复选框 文本框 表单验证
2015/06/25 Javascript
超实用的JavaScript表单代码段
2016/02/26 Javascript
Javascript对象字面量的理解
2016/06/22 Javascript
深入理解JS继承和原型链的问题
2016/12/17 Javascript
jQuery中extend函数简单用法示例
2017/10/11 jQuery
angular2系列之路由转场动画的示例代码
2017/11/09 Javascript
JS动态添加元素及绑定事件造成程序重复执行解决
2017/12/07 Javascript
vue.js移动数组位置,同时更新视图的方法
2018/03/08 Javascript
vue-cli2.9.3 详细教程
2018/04/23 Javascript
jQuery仿移动端支付宝键盘的实现代码
2018/08/15 jQuery
[59:30]VG vs LGD 2019国际邀请赛淘汰赛 胜者组 BO3 第二场 8.22
2019/09/05 DOTA
Python pickle类库介绍(对象序列化和反序列化)
2014/11/21 Python
Python求两个文本文件以行为单位的交集、并集与差集的方法
2015/06/17 Python
在centos7中分布式部署pyspider
2017/05/03 Python
对python中 math模块下 atan 和 atan2的区别详解
2020/01/17 Python
Python importlib动态导入模块实现代码
2020/04/16 Python
基于python生成英文版词云图代码实例
2020/05/16 Python
Python2与Python3关于字符串编码处理的差别总结
2020/09/07 Python
Python tkinter之Bind(绑定事件)的使用示例
2021/02/05 Python
cosme官方海外旗舰店:日本最大化妆品和美容产品的综合口碑网站
2017/01/18 全球购物
美国在线打印网站:Overnight Prints
2018/10/11 全球购物
幼儿园小班植树节活动方案
2014/03/04 职场文书
和谐社区口号
2014/06/19 职场文书
525心理活动总结
2014/07/04 职场文书
致接力运动员加油稿
2015/07/21 职场文书
股东合作协议书模板2篇
2019/11/05 职场文书
国庆节到了,利用JS实现一个生成国庆风头像的小工具 详解实现过程
2021/10/05 Javascript
python_tkinter事件类型详情
2022/03/20 Python
MySQL添加索引特点及优化问题
2022/07/23 MySQL