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中的多线程实例教程
Aug 27 Python
python编写爬虫小程序
May 14 Python
Python备份目录及目录下的全部内容的实现方法
Jun 12 Python
Python实现网络端口转发和重定向的方法
Sep 19 Python
Python虚拟环境virtualenv的安装与使用详解
May 28 Python
Window环境下Scrapy开发环境搭建
Nov 18 Python
Python中判断子串存在的性能比较及分析总结
Jun 23 Python
Python解析json时提示“string indices must be integers”问题解决方法
Jul 31 Python
Python递归函数 二分查找算法实现解析
Aug 12 Python
将python2.7添加进64位系统的注册表方式
Nov 20 Python
浅谈tensorflow 中的图片读取和裁剪方式
Jun 30 Python
python 实现德洛内三角剖分的操作
Apr 22 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
PHP中的加密功能
2006/10/09 PHP
php Smarty 字符比较代码
2011/02/27 PHP
用PHP实现 上一篇、下一篇的代码
2012/09/29 PHP
深入理解require与require_once与include以及include_once的区别
2013/06/05 PHP
解析php常用image图像函数集
2013/06/24 PHP
使用PHP如何实现高效安全的ftp服务器(一)
2015/12/20 PHP
基于PHP+mysql实现新闻发布系统的开发
2020/08/06 PHP
Jquery替换已存在于element上的event的方法
2010/03/09 Javascript
基于jquery的一个拖拽到指定区域内的效果
2011/09/21 Javascript
javascript获取下拉列表框当中的文本值示例代码
2013/07/31 Javascript
jquery禁止回车触发表单提交
2014/12/12 Javascript
JS动态添加Table的TR,TD实现方法
2015/01/28 Javascript
JS中取二维数组中最大值的方法汇总
2016/04/17 Javascript
bootstrap paginator分页前后台用法示例
2017/06/17 Javascript
vue基础之data存储数据及v-for循环用法示例
2019/03/08 Javascript
jQuery三组基本动画与自定义动画操作实例总结
2020/05/09 jQuery
原生js实现html手机端城市列表索引选择城市
2020/06/24 Javascript
vue如何使用rem适配
2021/02/06 Vue.js
[29:59]完美世界DOTA2联赛PWL S3 Forest vs access 第二场 12.11
2020/12/13 DOTA
wxpython 学习笔记 第一天
2009/03/16 Python
Python中的对象,方法,类,实例,函数用法分析
2015/01/15 Python
Python解决八皇后问题示例
2018/04/22 Python
基于python调用psutil模块过程解析
2019/12/20 Python
解决python3插入mysql时内容带有引号的问题
2020/03/02 Python
关于Python3爬虫利器Appium的安装步骤
2020/07/29 Python
详解Python中的路径问题
2020/09/02 Python
优秀团队获奖感言
2014/02/19 职场文书
环保建议书100字
2014/05/14 职场文书
大学毕业生求职自荐书
2014/06/05 职场文书
法学专业毕业实习自我鉴定2014
2014/09/27 职场文书
工作违纪检讨书范文
2015/01/26 职场文书
春风化雨观后感
2015/06/11 职场文书
护理心得体会范文
2016/01/22 职场文书
2016党员学习《反对自由主义》心得体会
2016/01/22 职场文书
Python快速优雅的批量修改Word文档样式
2021/05/20 Python
Python 处理表格进行成绩排序的操作代码
2021/07/26 Python