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将mdb数据库文件导入postgresql数据库示例
Feb 17 Python
python的tkinter布局之简单的聊天窗口实现方法
Sep 03 Python
详解使用python crontab设置linux定时任务
Dec 08 Python
python验证码识别教程之滑动验证码
Jun 04 Python
Win10 安装PyCharm2019.1.1(图文教程)
Sep 29 Python
使用Python实现画一个中国地图
Nov 23 Python
python关闭占用端口方式
Dec 17 Python
python小程序基于Jupyter实现天气查询的方法
Mar 27 Python
Python3.7 读取音频根据文件名生成脚本的代码
Apr 07 Python
Python 制作自动化翻译工具
Apr 25 Python
Python批量将csv文件转化成xml文件的实例
May 10 Python
Python装饰器的练习题
Nov 23 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
PHP四舍五入精确小数位及取整
2014/01/14 PHP
php+ajax导入大数据时产生的问题处理
2014/06/11 PHP
给ECShop添加最新评论
2015/01/07 PHP
PHP版本如何选择?应该使用哪个版本?
2015/05/13 PHP
php中关于socket的系列函数总结
2015/05/18 PHP
在chrome浏览器中,防止input[text]和textarea在聚焦时出现黄色边框的解决方法
2011/05/24 Javascript
JS高级调试技巧:捕获和分析 JavaScript Error详解
2014/03/16 Javascript
js如何调用qq互联api实现第三方登录
2014/03/28 Javascript
javascript实现日期按月份加减
2015/05/15 Javascript
jquery遍历函数siblings()用法实例
2015/12/24 Javascript
javascript类型系统 Array对象学习笔记
2016/01/09 Javascript
jQuery ajax提交Form表单实例(附demo源码)
2016/04/06 Javascript
JavaScript的ExtJS框架中数面板TreePanel的使用实例解析
2016/05/21 Javascript
DOM中事件处理概览与原理的全面解析
2016/08/16 Javascript
arcgis for js 修改infowindow样式的方法
2016/11/02 Javascript
JavaScript 数组的深度复制解析
2016/11/02 Javascript
微信小程序之拖拽排序(代码分享)
2017/01/21 Javascript
基于Require.js使用方法(总结)
2017/10/26 Javascript
Angular之toDoList的实现代码示例
2017/12/02 Javascript
vue 实现锚点功能操作
2020/08/10 Javascript
Python使用metaclass实现Singleton模式的方法
2015/05/05 Python
python 中random模块的常用方法总结
2017/07/08 Python
python利用urllib和urllib2访问http的GET/POST详解
2017/09/27 Python
matlab中实现矩阵删除一行或一列的方法
2018/04/04 Python
Python发展简史 Python来历
2019/05/14 Python
Python如何利用Har文件进行遍历指定字典替换提交的数据详解
2020/11/05 Python
纯CSS3实现表单验证效果(非常不错)
2017/01/18 HTML / CSS
深入理解css属性的选择对动画性能的影响
2016/04/20 HTML / CSS
西班牙鞋子和箱包在线销售网站:zapatos.es
2020/02/17 全球购物
C++如何引用一个已经定义过的全局变量
2014/08/25 面试题
支部书记四风问题对照检查材料
2014/10/04 职场文书
学风建设主题班会
2015/08/17 职场文书
小学体育队列队形教学反思
2016/02/16 职场文书
《走遍天下书为侣》教学反思
2016/02/22 职场文书
Python docx库删除复制paragraph及行高设置图片插入示例
2022/07/23 Python