Python Threading 线程/互斥锁/死锁/GIL锁

 更新时间:2019年07月21日 14:32:00   作者:唏嘘_713  
这篇文章主要介绍了Python Threading 线程/互斥锁/死锁/GIL锁的相关知识,本文给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下

导入线程包

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实现生成多种有规律的数字序列

    在 Python 编程中,生成数字序列是一项常见且重要的任务,本文将深入探讨如何使用Python中的内置函数、列表推导式、生成器等方式来生成多种有规律的数字序列,需要的可以参考下
    2024-03-03
  • 我的快递一个月没动静于是赶紧上线python快递查询系统

    我的快递一个月没动静于是赶紧上线python快递查询系统

    我的快递在路上走了一个月还没到,于是自己编写快递查询,文中通过实例代码截图的形式给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧
    2021-09-09
  • python使用urllib模块和pyquery实现阿里巴巴排名查询

    python使用urllib模块和pyquery实现阿里巴巴排名查询

    这篇文章主要介绍了python库urllib及pyquery基本东西的应用,实现阿里巴巴关键词排名的查询,其中涉及到urllib代理的设置,pyquery对html文档的解析
    2014-01-01
  • django模型中的字段和model名显示为中文小技巧分享

    django模型中的字段和model名显示为中文小技巧分享

    这里给大家分享2个可以让django模型中的字段和model名显示为中文的小技巧,非常的简单实用,给需要的小伙伴参考下。
    2014-11-11
  • python 中 .py文件 转 .pyd文件的操作

    python 中 .py文件 转 .pyd文件的操作

    这篇文章主要介绍了python 中 .py文件 转 .pyd文件的操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-03-03
  • python 下划线的不同用法

    python 下划线的不同用法

    在本文中,我们将介绍 Python 中 _ 字符的不同用法。就像 Python 中的许多其他内容一样,我们会看到 “_” 的不同用法主要是惯例问题。这里我们将介绍几种不同的情况。
    2020-10-10
  • django-rest-swagger的优化使用方法

    django-rest-swagger的优化使用方法

    今天小编就为大家分享一篇django-rest-swagger的优化使用方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-08-08
  • 详解用 python-docx 创建浮动图片

    详解用 python-docx 创建浮动图片

    这篇文章主要介绍了详解用 python-docx 创建浮动图片,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-01-01
  • python 换位密码算法的实例详解

    python 换位密码算法的实例详解

    这篇文章主要介绍了python 换位密码算法的实例详解的相关资料,换位密码基本原理:先把明文按照固定长度进行分组,然后对每一组的字符进行换位操作,从而实现加密,需要的朋友可以参考下
    2017-07-07
  • 关于Python面向对象编程的知识点总结

    关于Python面向对象编程的知识点总结

    Python从设计之初就已经是一门面向对象的语言,正因为如此,在Python中创建一个类和对象是很容易的。下面这篇文章将详细给大家介绍关于Python面向对象编程的知识点,需要的朋友可以参考借鉴,下面来一起看看吧。
    2017-02-02

最新评论