Python死锁是什么?
- 更新时间:2021-06-30 08:42:20
- 编辑:曹逸仙
给大家整理了相关的编程文章,网友汲翰采根据主题投稿了本篇教程内容,涉及到Python相关内容,已被630网友关注,下面的电子资料对本篇知识点有更加详尽的解释。
参考资料
- 《零基础学Python(第2版)》视频,例题源代码 配套资源 / 38.3 MB / 黄传祿 张克强 赵越 推荐度:
- Python地理空间分析指南 PDF 电子书 / 12.4 MB / 莱哈德 推荐度:
- Python 3图像处理实战 PDF 电子书 / 81.9 MB / 阿什温·帕扬卡尔 推荐度:
- 《中学生Python创意编程》配套资源 配套资源 / 888.9 MB / 方其桂 推荐度:
- Python网络数据采集 PDF 电子书 / 16.7 MB / 米切尔 推荐度:
正文内容
小编给大家总结一篇《Python死锁是什么?》的技术内容,感觉很有用处,增加了更多实例内容,觉得好就请收藏下。
1、说明
在线共享多个资源时,如果两个线程分别占用一部分资源,同时等待对方的资源,就会导致死锁。
虽然死锁很少发生,但是一旦发生,应用程序就会停止响应。
2、解决方法
程序设计应尽可能避免死锁(银行家算法)
增加超时时间等。
3、实例
""" Python 死锁演示 """ import time import threading mutexA = threading.Lock() mutexB = threading.Lock() class MyThread1(threading.Thread): def run(self): # 对mutexA上锁 mutexA.acquire() # mutexA上锁后,延时1秒,等待另外那个线程 把mutexB上锁 print(self.name+'----do1---up----') time.sleep(1) # 此时会堵塞,因为这个mutexB已经被另外的线程抢先上锁了 mutexB.acquire() print(self.name+'----do1---down----') mutexB.release() # 对mutexA解锁 mutexA.release() class MyThread2(threading.Thread): def run(self): # 对mutexB上锁 mutexB.acquire() # mutexB上锁后,延时1秒,等待另外那个线程 把mutexA上锁 print(self.name+'----do2---up----') time.sleep(1) # 此时会堵塞,因为这个mutexA已经被另外的线程抢先上锁了 mutexA.acquire() print(self.name+'----do2---down----') mutexA.release() # 对mutexB解锁 mutexB.release() def main(): t1 = MyThread1() t2 = MyThread2() t1.start() t2.start() if __name__ == '__main__': main()
以上就是Python死锁的介绍,希望对大家有所帮助。
相关教程
-
python什么是递归?两种优先搜索算法的实现 (代码示例)
本篇文章给大家带来的内容是介绍python什么是递归?两种优先搜索算法的实现 (代码示例)。有一定的参考价值,有需要的朋友可以参考一下,希望对你们有所帮助。
发布时间:2019-07-11
-
零基础使用Python读写处理Excel表格的方法
这篇文章主要介绍了Python读写处理Excel表格,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
发布时间:2019-06-03