python死锁案例_python避免死锁方法实例分析
本文实例讲述了python避免死锁方法。分享给大家供大家参考。具体分析如下:
当两个或者更多的线程在等待资源的时候就会产生死锁,两个线程相互等待。
在本文实例中 thread1 等待thread2释放block , thread2等待thtead1释放ablock,
避免死锁的原则:
1. 一定要以一个固定的顺序来取得锁,这个列子中,意味着首先要取得alock, 然后再去block
2. 一定要按照与取得锁相反的顺序释放锁,这里,应该先释放block,然后是alock
import threading ,time
a = 5
alock = threading.Lock()
b = 5
block = threading.Lock()
def thread1calc():
print "thread1 acquiring lock a"
alock.acquire()
time.sleep(5)
print "thread1 acquiring lock b"
block.acquire()
a+=5
b+=5
print "thread1 releasing both locks"
block.release()
alock.release()
def thread2calc():
print "thread2 acquiring lock b"
block.acquire()
time.sleep(5)
print "thread2 acquiring lock a"
alock.acquire()
time.sleep(5)
a+=10
b+=10
print "thread2 releasing both locks"
block.release()
alock.release()
t = threading.Thread(target = thread1calc)
t.setDaemon(1)
t.start()
t = threading.Thread(target = thread2calc)
t.setDaemon(2)
t.start()
while 1:
time.sleep(300)
输出:
thread1 acquiring lock a
thread2 acquiring lock b
thread1 acquiring lock b
thread2 acquiring lock a
希望本文所述对大家的Python程序设计有所帮助。
本文标题: python避免死锁方法实例分析
本文地址: http://www.cppcns.com/jiaoben/python/125900.html
python死锁案例_python避免死锁方法实例分析相关推荐
- python多功能电子钟_python gui - PyQt4 精彩实例分析之电子钟
PyQt4 精彩实例分析之电子钟,当然在写实例之前要先安装PyQt4模块.from PyQt4.QtGui import * from PyQt4.QtCore import * import sys ...
- python死锁案例_Python 多线程死锁
场景是这样的:开启多个线程访问外部 api ,过一段时间,发现所有线程死锁. 环境: python2.6.7 centos7.1 urllib2 , suse 下无此问题. dump 如下: Thre ...
- python正则表达式案例_Python正则表达式使用经典实例
regex=ur"" #正则表达式 match = re.search(regex, subject) if match: # match start: match.start() ...
- python局部变量函数_python函数局部变量用法实例分析
本文实例讲述了python函数局部变量用法.分享给大家供大家参考.具体分析如下: 当你在函数定义内声明变量的时候,它们与函数外具有相同名称的其他变量没有任何关系,即变量名称对于函数来说是 局部 的.这 ...
- python accessiblechildren用法_python类继承用法实例分析
本文实例讲述了python类继承用法.分享给大家供大家参考.具体如下: help('object') # test class Class1(object): """ C ...
- python分词设计_Python smallseg分词用法实例分析
这篇文章主要介绍了Python smallseg分词用法,以实例形式分析了Python实现分析的相关技巧,需要的朋友可以参考下 本文实例讲述了Python smallseg分词用法.分享给大家供大家参 ...
- python函数形参_python函数形参用法实例分析
本文实例讲述了python函数形参用法.分享给大家供大家参考.具体如下: 函数形参: 函数取得的参数是你提供给函数的值,这样函数就可以利用这些值 做 一些事情.这些参数就像变量一样,只不过它们的值是在 ...
- python装饰器函数-Python函数装饰器常见使用方法实例详解
本文实例讲述了Python函数装饰器常见使用方法.分享给大家供大家参考,具体如下: 一.装饰器 首先,我们要了解到什么是开放封闭式原则? 软件一旦上线后,对修改源代码是封闭的,对功能的扩张是开放的,所 ...
- python怎么模拟浏览器交互_干货分享:python爬虫模拟浏览器的两种方法实例分析(赶紧收藏)...
今天为大家带来的内容是:干货分享:python爬虫模拟浏览器的两种方法实例分析(赶紧收藏) 文章主要介绍了python爬虫模拟浏览器的两种方法,结合实例形式分析了Python爬虫模拟浏览器的两种常见操 ...
最新文章
- html div坐标定位,html div位置和显示
- HDU5886 Tower Defence 【两遍树形dp】【最长链预处理】
- 科普大V河森堡:用科学的方法回答哲学问题
- 盘点Windows10系统的使用小技巧三 —— 虚拟桌面
- python renames_Python os.renames() 方法
- 理解分布式系统中的缓存架构(下)
- sklearn自学指南(part7)--使用手册的目录
- 【Python生成器与迭代器的区别】
- Java设计模式学习总结(3)——创建型模式之抽象工厂模式
- Asp.net使用JQuery实现评论的无刷新分页及分段延迟加载效果
- 20180326-1777-1.2-UMLDOC
- 物联网——射频识别技术的应用
- VTK学习笔记(二十三)vtk空间几何变换
- python修改系统时间_python修改操作系统时间的方法
- 前沿计算技术于推动设计技术发展
- JS - 计算直角三角形的边长及角度
- Java 对象 的 比较 - 细节狂魔
- 下载维基百科wikipedia!
- excel查找命令_快速查找Excel功能区命令
- XP系统常用的登录密码方法破解(一共9种)
热门文章
- python数据处理不用编程_用Python玩转数据数据处理相关小例编程题
- StringBuilder的原理
- mysql查询锁表语句和kill对应的线程
- 虚函数实现多态---C++
- mysql慢日志优化_Mysql优化-慢sql日志
- 2.1.2 操作系统之进程的状态(运行、就绪、阻塞、创建、终止)及转换(就绪-运行、运行-就绪、运行-阻塞、阻塞-就绪)
- restful-api接口的设计规范介绍
- Java内存泄露和内存溢出、JVM命令行工具、.JDK可视化工具、Java Class文件
- 类加载器、双亲委派模型
- c#如何通过ftp上传文件_定时上传文件到ftp,如何使用工具定时上传文件到ftp