python避免死锁方法实例分析


Posted in Python onJune 04, 2015

本文实例讲述了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 相关文章推荐
Python多进程编程技术实例分析
Sep 16 Python
python代码 if not x: 和 if x is not None: 和 if not x is None:使用介绍
Sep 21 Python
Python 由字符串函数名得到对应的函数(实例讲解)
Aug 10 Python
python使用super()出现错误解决办法
Aug 14 Python
python得到一个excel的全部sheet标签值方法
Dec 10 Python
Python实现的爬取小说爬虫功能示例
Mar 30 Python
Python使用py2neo操作图数据库neo4j的方法详解
Jan 13 Python
使用Python实现Wake On Lan远程开机功能
Jan 22 Python
解决pycharm同一目录下无法import其他文件
Feb 12 Python
Python绘制全球疫情变化地图的实例代码
Apr 20 Python
python下对hsv颜色空间进行量化操作
Jun 04 Python
使用AJAX和Django获取数据的方法实例
Oct 25 Python
python中字符串前面加r的作用
Jun 04 #Python
python生成器generator用法实例分析
Jun 04 #Python
python函数装饰器用法实例详解
Jun 04 #Python
Python中函数的参数定义和可变参数用法实例分析
Jun 04 #Python
python类装饰器用法实例
Jun 04 #Python
python获得一个月有多少天的方法
Jun 04 #Python
Python中threading模块join函数用法实例分析
Jun 04 #Python
You might like
CodeIgniter模板引擎使用实例
2014/07/15 PHP
jquery parent和parents的区别分析
2013/10/02 Javascript
JS案例分享之金额小写转大写
2014/05/15 Javascript
下拉框select的绑定示例
2014/09/04 Javascript
js运动动画的八个知识点
2015/03/12 Javascript
JavaScript 变量、作用域及内存
2015/04/08 Javascript
jQuery选择器基础入门教程
2016/05/10 Javascript
Bootstrap Paginator分页插件使用方法详解
2016/05/30 Javascript
js实现动态创建的元素绑定事件
2016/07/19 Javascript
hovertree插件实现二级树形菜单(简单实用)
2016/12/28 Javascript
基于es6三点运算符的使用方法(实例讲解)
2017/10/12 Javascript
从零开始搭建一个react项目开发
2018/02/09 Javascript
JavaScript创建对象方式总结【工厂模式、构造函数模式、原型模式等】
2018/12/19 Javascript
nodejs实现UDP组播示例方法
2019/11/04 NodeJs
javascript异常处理实现原理详解
2020/02/17 Javascript
Selenium执行JavaScript脚本的方法示例
2020/12/31 Javascript
[01:33:30]DOTA2-DPC中国联赛 正赛 RNG vs Phoenix BO3 第二场 2月5日
2021/03/11 DOTA
Python网站验证码识别
2016/01/25 Python
matplotlib实现热成像图colorbar和极坐标图的方法
2018/12/13 Python
python日期相关操作实例小结
2019/06/24 Python
Python+AutoIt实现界面工具开发过程详解
2019/08/07 Python
python实现淘宝购物系统
2019/10/25 Python
使用css3做0.5px的细线的示例代码
2018/01/18 HTML / CSS
HTML5之SVG 2D入门8—文档结构及相关元素总结
2013/01/30 HTML / CSS
html5 input属性使用示例
2013/06/28 HTML / CSS
Canvas实现保存图片到本地的示例代码
2018/06/28 HTML / CSS
俄罗斯和世界各地的酒店预订:Hotels.com俄罗斯
2016/08/19 全球购物
Nike加拿大官网:Nike.com (CA)
2019/04/09 全球购物
经典c++面试题三
2015/07/08 面试题
物理系毕业生自荐书范文
2014/02/22 职场文书
科级干部群众路线教育实践活动个人对照检查材料
2014/09/19 职场文书
党员批评与自我批评范文
2014/09/23 职场文书
优秀党员申报材料
2014/12/18 职场文书
电力企业职工培训心得体会
2016/01/11 职场文书
廉洁自律承诺书2016
2016/03/25 职场文书
聊聊Python中关于a=[[]]*3的反思
2021/06/02 Python