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编程之属性和方法实例详解
May 19 Python
Python实现1-9数组形成的结果为100的所有运算式的示例
Nov 03 Python
Python matplotlib 画图窗口显示到gui或者控制台的实例
May 24 Python
Python OpenCV对本地视频文件进行分帧保存的实例
Jan 08 Python
python+Django+pycharm+mysql 搭建首个web项目详解
Nov 29 Python
python 已知一个字符,在一个list中找出近似值或相似值实现模糊匹配
Feb 29 Python
Django 5种类型Session使用方法解析
Apr 29 Python
Python+OpenCV图像处理——图像二值化的实现
Oct 24 Python
Python web框架(django,flask)实现mysql数据库读写分离的示例
Nov 18 Python
python RSA加密的示例
Dec 09 Python
Python 实现RSA加解密文本文件
Dec 30 Python
python运行脚本文件的三种方法实例
Jun 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
php使用base64加密解密图片示例分享
2014/01/20 PHP
PHP中提问频率最高的11个面试题和答案
2014/09/02 PHP
php实现通用的从数据库表读取数据到数组的函数实例
2015/03/21 PHP
学习YUI.Ext 第二天
2007/03/10 Javascript
使用jquery与图片美化checkbox和radio控件的代码(打包下载)
2010/11/11 Javascript
javascript实现window.print()去除页眉页脚
2014/12/30 Javascript
jQuery中Ajax的load方法详解
2015/01/14 Javascript
js焦点文字滚动效果代码分享
2015/08/25 Javascript
Javascript实现快速排序(Quicksort)的算法详解
2015/09/06 Javascript
jquery实现页面常用的返回顶部效果
2016/03/04 Javascript
jQuery hover事件简单实现同时绑定2个方法
2016/06/07 Javascript
浅谈javascript:两种注释,声明变量,定义函数
2016/09/29 Javascript
js判断文件格式及大小的简单实例(必看)
2016/10/11 Javascript
微信小程序 教程之列表渲染
2016/10/18 Javascript
element-ui 上传图片后清空图片显示的实例
2018/09/04 Javascript
vue.js 实现点击按钮动态添加li的方法
2018/09/07 Javascript
js函数柯里化的方法和作用实例分析
2020/04/11 Javascript
在python中实现强制关闭线程的示例
2019/01/22 Python
Numpy之random函数使用学习
2019/01/29 Python
Python实现合并excel表格的方法分析
2019/04/13 Python
用python打印1~20的整数实例讲解
2019/07/01 Python
Python numpy数组转置与轴变换
2019/11/15 Python
SportsDirect.com马来西亚:英国第一体育零售商
2018/11/21 全球购物
Travelstart沙特阿拉伯:廉价航班、豪华酒店和实惠的汽车租赁优惠
2019/04/06 全球购物
StubHub新西兰:购买和出售你的门票
2019/04/22 全球购物
解释DataSet(ds) 和 ds as DataSet 的含义
2014/07/27 面试题
优秀求职自荐信怎样写
2013/12/18 职场文书
如何写好优秀的创业计划书
2014/01/30 职场文书
优秀女职工事迹材料
2014/02/06 职场文书
本科毕业生自荐信
2014/05/26 职场文书
年检委托书
2014/08/30 职场文书
2014年大学生预备党员思想汇报1000字
2014/09/13 职场文书
2014年社区综治工作总结
2014/11/17 职场文书
党支部对转正的意见
2015/06/02 职场文书
Java中生成微信小程序太阳码的实现方案
2022/06/01 Java/Android
SpringCloud中分析讲解Feign组件添加请求头有哪些坑梳理
2022/06/21 Java/Android