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时间戳与时间字符串互相转换实例代码
Nov 28 Python
在Python中使用M2Crypto模块实现AES加密的教程
Apr 08 Python
Python删除windows垃圾文件的方法
Jul 14 Python
Python Paramiko模块的安装与使用详解
Nov 18 Python
python中OrderedDict的使用方法详解
May 05 Python
python实现机器人行走效果
Jan 29 Python
python pandas修改列属性的方法详解
Jun 09 Python
python使用time、datetime返回工作日列表实例代码
May 09 Python
OpenCV 表盘指针自动读数的示例代码
Apr 10 Python
Pycharm2020.1安装中文语言插件的详细教程(不需要汉化)
Aug 07 Python
python爬取代理IP并进行有效的IP测试实现
Oct 09 Python
pyspark对Mysql数据库进行读写的实现
Dec 30 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 模拟$_PUT实现代码
2010/03/15 PHP
关于php微信订阅号开发之token验证后自动发送消息给订阅号但是没有消息返回的问题
2015/12/21 PHP
py文件转exe时包含paramiko模块出错解决方法
2016/08/12 PHP
PHP不使用递归的无限级分类简单实例
2016/11/05 PHP
Windows下wamp php单元测试工具PHPUnit安装及生成日志文件配置方法
2018/05/28 PHP
escape、encodeURI、encodeURIComponent等方法的区别比较
2006/12/27 Javascript
JavaScript 动态添加表格行 使用模板、标记
2009/10/24 Javascript
javascript数字数组去重复项的实现代码
2010/12/30 Javascript
JQuery对checkbox操作 (循环获取)
2011/05/20 Javascript
使用闭包对setTimeout进行简单封装避免出错
2013/07/10 Javascript
jquery 绑定回车动作扑捉回车键触发的事件
2014/03/26 Javascript
jQuery获得document和window对象宽度和高度的方法
2015/03/25 Javascript
JavaScript实现网站访问次数统计代码
2015/08/12 Javascript
jQuery插件实现带圆点的焦点图片轮播切换
2016/01/18 Javascript
BootStrap整体框架之基础布局组件
2016/12/15 Javascript
JS实现Cookie读、写、删除操作工具类示例
2018/08/28 Javascript
基于游标的分页接口实现代码示例
2018/11/12 Javascript
vue 点击展开显示更多(点击收起部分隐藏)
2019/04/09 Javascript
jQuery 判断元素是否存在然后按需加载内容的实现代码
2020/01/16 jQuery
解决Mint-ui 框架Popup和Datetime Picker组件滚动穿透的问题
2020/11/04 Javascript
Python map和reduce函数用法示例
2015/02/26 Python
在Python中移动目录结构的方法
2016/01/31 Python
Python reversed函数及使用方法解析
2020/03/17 Python
用CSS3和table标签实现一个圆形轨迹的动画的示例代码
2019/01/17 HTML / CSS
中国领先的专业演出票务网:永乐票务
2016/08/29 全球购物
viagogo英国票务平台:演唱会、体育比赛、戏剧门票
2017/03/24 全球购物
Yahoo-PHP面试题1
2016/07/20 面试题
单位实习证明怎么写
2014/01/17 职场文书
入伍通知书
2015/04/23 职场文书
感恩教育观后感
2015/06/17 职场文书
英文投诉信格式
2015/07/03 职场文书
《开国大典》教学反思
2016/02/16 职场文书
2019大学生暑期实习心得总结
2019/08/21 职场文书
Apache Pulsar集群搭建部署详细过程
2022/02/12 Servers
Python必备技巧之函数的使用详解
2022/04/04 Python
Golang入门之计时器
2022/05/04 Golang