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之使用Python查询更新数据库
Nov 25 Python
python中迭代器(iterator)用法实例分析
Apr 29 Python
基于python脚本实现软件的注册功能(机器码+注册码机制)
Oct 09 Python
Python面向对象class类属性及子类用法分析
Feb 02 Python
深入浅析python with语句简介
Apr 11 Python
无法使用pip命令安装python第三方库的原因及解决方法
Jun 12 Python
pandas数据集的端到端处理
Feb 18 Python
python实现串口自动触发工作的示例
Jul 02 Python
Python 词典(Dict) 加载与保存示例
Dec 06 Python
selenium WebDriverWait类等待机制的实现
Mar 18 Python
python 实现IP子网计算
Feb 18 Python
Python基础之元组与文件知识总结
May 19 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的日期与时间函数技巧
2008/04/24 PHP
php反射学习之不用new方法实例化类操作示例
2019/06/14 PHP
javascript 禁止复制网页
2009/06/11 Javascript
JQuery Tips(4) 一些关于提高JQuery性能的Tips
2009/12/19 Javascript
javascript中的prototype属性实例分析说明
2010/08/09 Javascript
javascript 使用 NodeList需要注意的问题
2013/03/04 Javascript
使用Meteor配合Node.js编写实时聊天应用的范例
2015/06/23 Javascript
简单实现js进度条加载效果
2020/03/25 Javascript
Vue 全局loading组件实例详解
2018/05/29 Javascript
React SSR样式及SEO的实践
2018/10/22 Javascript
详解VUE单页应用骨架屏方案
2019/01/17 Javascript
Vue项目中如何使用Axios封装http请求详解
2019/10/23 Javascript
Vue v-model组件封装(类似弹窗组件)
2020/01/08 Javascript
js面向对象之实现淘宝放大镜
2020/01/15 Javascript
vue keep-alive实现多组件嵌套中个别组件存活不销毁的操作
2020/10/30 Javascript
python简单商城购物车实例代码
2018/03/15 Python
详解Python 4.0 预计推出的新功能
2019/07/26 Python
python解析命令行参数的三种方法详解
2019/11/29 Python
使用pandas的box_plot去除异常值
2019/12/10 Python
python 解决print数组/矩阵无法完整输出的问题
2020/02/19 Python
python输出结果刷新及进度条的实现操作
2020/07/13 Python
html5定位获取当前位置并在百度地图上显示
2014/08/22 HTML / CSS
中国高端鲜花第一品牌:roseonly(一生只送一人)
2017/02/12 全球购物
什么是Smarty变量操作符?如何使用Smarty变量操作符
2014/07/18 面试题
2013年大学生的自我鉴定
2013/10/24 职场文书
采购主管的岗位职责
2013/12/17 职场文书
实习鉴定范文
2013/12/19 职场文书
司机检讨书
2014/02/13 职场文书
捐资助学倡议书
2014/04/15 职场文书
乡镇领导干部个人对照检查材料思想汇报
2014/09/23 职场文书
工作骂脏话检讨书
2014/10/05 职场文书
派出所正风肃纪剖析材料
2014/10/10 职场文书
检讨书大全
2015/01/27 职场文书
呼兰河传读书笔记
2015/06/30 职场文书
Python爬虫网络请求之代理服务器和动态Cookies
2022/04/12 Python
CSS实现鼠标悬浮动画特效
2023/05/07 HTML / CSS