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字典操作简明总结
Apr 13 Python
详解Python中用于计算指数的exp()方法
May 14 Python
Python3实现带附件的定时发送邮件功能
Dec 22 Python
详解python之协程gevent模块
Jun 14 Python
详解python3中tkinter知识点
Jun 21 Python
解决python测试opencv时imread导致的错误问题
Jan 26 Python
python获取txt文件词向量过程详解
Jul 05 Python
Django处理Ajax发送的Get请求代码详解
Jul 29 Python
python flask搭建web应用教程
Nov 19 Python
python脚本监控logstash进程并邮件告警实例
Apr 28 Python
python scrapy简单模拟登录的代码分析
Jul 21 Python
pytorch中的torch.nn.Conv2d()函数图文详解
Feb 28 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
海贼王:最美的悬赏令!
2020/03/02 日漫
在MongoDB中模拟Auto Increment的php代码
2011/03/06 PHP
PHP获取文件的MD5值并判断是否被修改的例子
2014/06/19 PHP
php获取textarea的值并处理回车换行的方法
2014/10/20 PHP
html超链接打开窗口大小的方法
2013/03/05 Javascript
javascript中的document.open()方法使用介绍
2013/10/09 Javascript
javascript读写json示例
2014/04/11 Javascript
JS烟花背景效果实现方法
2015/03/03 Javascript
jQuery div拖拽用法实例
2016/01/14 Javascript
js从数组中删除指定值(不是指定位置)的元素实现代码
2016/09/13 Javascript
js对象实例详解(JavaScript对象深度剖析,深度理解js对象)
2017/09/21 Javascript
深入浅析ES6 Class 中的 super 关键字
2017/10/20 Javascript
Bootstrap3.3.7导航栏下拉菜单鼠标滑过展开效果
2017/10/31 Javascript
浅谈React高阶组件
2018/03/28 Javascript
实例讲解JavaScript截取字符串
2018/11/30 Javascript
Vue加载json文件的方法简单示例
2019/01/28 Javascript
vue子传父关于.sync与$emit的实现
2019/11/05 Javascript
详解js中的原型,原型对象,原型链
2020/07/16 Javascript
Python单例模式实例详解
2017/03/01 Python
浅谈numpy中函数resize与reshape,ravel与flatten的区别
2020/06/18 Python
让IE可以变相支持CSS3选择器
2010/01/21 HTML / CSS
波兰品牌鞋履在线商店:Eastend.pl
2020/01/11 全球购物
求职信范文英文版
2014/01/05 职场文书
幼儿园家长评语
2014/02/10 职场文书
《梅兰芳学艺》教学反思
2014/02/24 职场文书
绿色环保演讲稿
2014/05/10 职场文书
助理政工师申报材料
2014/06/03 职场文书
人大调研汇报材料
2014/08/14 职场文书
优秀党员学习焦裕禄精神思想汇报范文
2014/09/10 职场文书
六年级学生期末评语
2014/12/26 职场文书
复兴之路观后感3000字
2015/06/02 职场文书
2019让人心动的商业计划书
2019/06/27 职场文书
2019年个人工作总结范文(3篇)
2019/08/27 职场文书
2019年英语版感谢信(8篇)
2019/09/29 职场文书
《遗弃》开发商删推文要跑路?官方回应:还在开发
2022/04/03 其他游戏
Django框架模板用法详解
2022/06/10 Python