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求素数示例分享
Feb 16 Python
跟老齐学Python之复习if语句
Oct 02 Python
举例讲解Python中的死锁、可重入锁和互斥锁
Nov 05 Python
Python上传package到Pypi(代码简单)
Feb 06 Python
Python学习入门之区块链详解
Jul 25 Python
Python实现可获取网易页面所有文本信息的网易网络爬虫功能示例
Jan 15 Python
在windows下使用python进行串口通讯的方法
Jul 02 Python
python批量将excel内容进行翻译写入功能
Oct 10 Python
python3 tcp的粘包现象和解决办法解析
Dec 09 Python
python如何获取apk的packagename和activity
Jan 10 Python
Django多数据库联用实现方法解析
Nov 12 Python
Python使用OpenCV和K-Means聚类对毕业照进行图像分割
Jun 11 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
海贼王:最美的悬赏令!
2020/03/02 日漫
php array_map array_multisort 高效处理多维数组排序
2009/06/11 PHP
php错误提示failed to open stream: HTTP request failed!的完美解决方法
2011/06/06 PHP
PHP循环语句笔记(foreach,list)
2011/11/29 PHP
destoon二次开发常用数据库操作
2014/06/21 PHP
支持生僻字且自动识别utf-8编码的php汉字转拼音类
2014/06/27 PHP
浅析php原型模式
2014/11/25 PHP
PHP 闭包详解及实例代码
2016/09/28 PHP
PHP+JQUERY操作JSON实例
2017/03/23 PHP
在IE浏览器中resize事件执行多次的解决方法
2011/07/12 Javascript
JS获取键盘上任意按键的值(实例代码)
2013/11/12 Javascript
javascript实现简单计算器效果【推荐】
2016/04/19 Javascript
原生javascript实现分享到朋友圈功能 支持ios和android
2016/05/11 Javascript
js重写方法的简单实现
2016/07/10 Javascript
nodejs发送http请求时遇到404长时间未响应的解决方法
2017/12/10 NodeJs
vue.js配合$.post从后台获取数据简单demo分享
2018/08/11 Javascript
解析vue、angular深度作用选择器
2019/09/11 Javascript
jQuery实现评论模块
2020/08/19 jQuery
vue 页面跳转的实现方式
2021/01/12 Vue.js
[01:44]剑指西雅图 展望TI之CIS战队专访
2014/06/25 DOTA
Python 字典dict使用介绍
2014/11/30 Python
利用Python绘制数据的瀑布图的教程
2015/04/07 Python
TensorFlow实现模型评估
2018/09/07 Python
基于Python实现迪杰斯特拉和弗洛伊德算法
2020/05/27 Python
使用Python计算玩彩票赢钱概率
2019/06/26 Python
pyqt5 使用cv2 显示图片,摄像头的实例
2019/06/27 Python
用Python实现最速下降法求极值的方法
2019/07/10 Python
Python读入mnist二进制图像文件并显示实例
2020/04/24 Python
python super()函数的基本使用
2020/09/10 Python
python Scrapy爬虫框架的使用
2021/01/21 Python
Myprotein比利时官方网站:欧洲第一运动营养品牌
2020/10/04 全球购物
捷克建筑材料网上商店:DEK.cz
2021/03/06 全球购物
公开服务承诺制度
2014/03/26 职场文书
2015最新学生自我评价范文
2015/03/03 职场文书
2016优秀护士先进个人事迹材料
2016/02/25 职场文书
关于@OnetoMany关系映射的排序问题,使用注解@OrderBy
2021/12/06 Java/Android