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中用于返回绝对值的abs()方法
May 14 Python
Python实现数通设备端口使用情况监控实例
Jul 15 Python
python使用opencv驱动摄像头的方法
Aug 03 Python
对python中dict和json的区别详解
Dec 18 Python
Django项目后台不挂断运行的方法
Aug 31 Python
18个Python脚本可加速你的编码速度(提示和技巧)
Oct 17 Python
python读取tif图片时保留其16bit的编码格式实例
Jan 13 Python
浅谈python累加求和+奇偶数求和_break_continue
Feb 25 Python
深入浅析Python 命令行模块 Click
Mar 11 Python
python时间序列数据转为timestamp格式的方法
Aug 03 Python
Python读取图像并显示灰度图的实现
Dec 01 Python
Python3+Flask安装使用教程详解
Feb 16 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
DOTA2【瓜皮时刻】Vol.91 RTZ山史最惨“矿难”
2021/03/05 DOTA
SWFUpload与CI不能正确上传识别文件MIME类型解决方法分享
2011/04/18 PHP
PHP中使用Session配合Javascript实现文件上传进度条功能
2014/10/15 PHP
php备份数据库类分享
2015/04/14 PHP
YII2框架中excel表格导出的方法详解
2017/07/21 PHP
IE和FireFox(FF)中js和css的不同
2009/04/13 Javascript
菜鸟javascript基础资料整理2
2010/12/06 Javascript
javascript复制对象使用说明
2011/06/28 Javascript
关于js datetime的那点事
2011/11/15 Javascript
JS实现匀速运动的代码实例
2013/11/29 Javascript
jQuery实现点击该行即可删除HTML表格行
2014/10/17 Javascript
七夕情人节丘比特射箭小游戏
2015/08/20 Javascript
基于JQuery的$.ajax方法进行异步请求导致页面闪烁的解决办法
2016/05/10 Javascript
Jquery揭秘系列:ajax原生js实现详解(推荐)
2016/06/08 Javascript
Javascript自定义事件详解
2017/01/13 Javascript
ExtJs异步无法向外传值和赋值的完美解决办法
2017/06/14 Javascript
在vue中获取微信支付code及code被占用问题的解决方法
2019/04/16 Javascript
微信小程序用户拒绝授权的处理方法详解
2019/09/20 Javascript
Python使用scrapy采集数据过程中放回下载过大页面的方法
2015/04/08 Python
Python中用PIL库批量给图片加上序号的教程
2015/05/06 Python
关于pytorch中网络loss传播和参数更新的理解
2019/08/20 Python
Python集合操作方法详解
2020/02/09 Python
pandas使用之宽表变窄表的实现
2020/04/12 Python
python 爬虫基本使用——统计杭电oj题目正确率并排序
2020/10/26 Python
HTTP状态码详解
2021/03/18 杂记
HTML5微信播放全屏问题的解决方法
2017/03/09 HTML / CSS
Fairyseason:为个人和批发商提供女装和配件
2017/03/01 全球购物
土耳其玩具商店:Toyzz Shop
2019/08/02 全球购物
土木工程应届生求职信
2013/10/31 职场文书
总经理职责范文
2013/11/08 职场文书
《七颗钻石》教学反思
2014/02/28 职场文书
安全生产年活动总结
2014/08/29 职场文书
学生检讨书怎么写
2014/10/09 职场文书
工程技术负责人岗位职责
2015/04/13 职场文书
2019运动会广播加油稿汇总
2019/08/21 职场文书
手把手教你用SpringBoot将文件打包成zip存放或导出
2021/06/11 Java/Android