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基于xmlrpc实现二进制文件传输的方法
Jun 02 Python
Python的迭代器和生成器
Jul 29 Python
儿童学习python的一些小技巧
May 27 Python
Python3.0 实现决策树算法的流程
Aug 08 Python
python爬虫 基于requests模块发起ajax的get请求实现解析
Aug 20 Python
python求加权平均值的实例(附纯python写法)
Aug 22 Python
对Django的restful用法详解(自带的增删改查)
Aug 28 Python
Python简单实现区域生长方式
Jan 16 Python
python判断两个序列的成员是否一样的实例代码
Mar 01 Python
基于Python中random.sample()的替代方案
May 23 Python
解决python 执行shell命令无法获取返回值的问题
Dec 05 Python
详解pandas映射与数据转换
Jan 22 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
用Zend Encode编写开发PHP程序
2006/10/09 PHP
php生成短网址示例
2014/05/05 PHP
php获取本周开始日期和结束日期的方法
2015/03/09 PHP
php把时间戳转换成多少时间之前函数的实例
2016/11/16 PHP
浅谈php中变量的数据类型判断函数
2017/03/04 PHP
页面只有一个text的时候,回车自动submit的解决方法
2010/08/12 Javascript
使用Java实现简单的server/client回显功能的方法介绍
2013/05/03 Javascript
一个Action如何调用两个不同的方法
2014/05/22 Javascript
JavaScript弹出窗口方法汇总
2014/08/12 Javascript
jQuery实现判断滚动条到底部
2015/06/23 Javascript
基于Vue.js的表格分页组件
2016/05/22 Javascript
javascript中sort排序实例详解
2016/07/24 Javascript
轻松掌握JavaScript中介者模式
2016/08/26 Javascript
angular分页指令操作
2017/01/09 Javascript
javascript设计模式之Adapter模式【适配器模式】实现方法示例
2017/01/13 Javascript
js实现简单的贪吃蛇游戏
2020/04/23 Javascript
浅谈vue中resetFields()使用注意事项
2020/08/12 Javascript
vue实现移动端拖动排序
2020/08/21 Javascript
python计算最大优先级队列实例
2013/12/18 Python
python使用正则表达式分析网页中的图片并进行替换的方法
2015/03/26 Python
简单解析Django框架中的表单验证
2015/07/17 Python
python修改txt文件中的某一项方法
2018/12/29 Python
利用Python查看微信共同好友功能的实现代码
2019/04/24 Python
详解Python用三种方式统计词频的方法
2019/07/29 Python
HTML5拖放效果的实现代码
2016/11/17 HTML / CSS
html5 input输入实时检测以及延时优化
2018/07/18 HTML / CSS
XMLHttpRequest对象在IE和Firefox中创建方式有没有不同
2016/03/23 面试题
岗位职责的定义
2013/11/10 职场文书
2014年党风建设工作总结
2014/11/19 职场文书
2014年实习生工作总结
2014/11/27 职场文书
2014年平安夜寄语
2014/12/08 职场文书
志愿者个人总结
2015/03/03 职场文书
小学教学工作总结2015
2015/05/13 职场文书
导游词之南京汤山温泉
2019/11/26 职场文书
详解Js模块化的作用原理和方案
2021/04/29 Javascript
mysql幻读详解实例以及解决办法
2022/06/16 MySQL