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 05 Python
python中string模块各属性以及函数的用法介绍
May 30 Python
使用pip发布Python程序的方法步骤
Oct 11 Python
详解Django-restframework 之频率源码分析
Feb 27 Python
Python利用lxml模块爬取豆瓣读书排行榜的方法与分析
Apr 15 Python
python操作小程序云数据库实现简单的增删改查功能
Jun 06 Python
Python Django框架url反向解析实现动态生成对应的url链接示例
Oct 18 Python
Python二次规划和线性规划使用实例
Dec 09 Python
python使用正则表达式(Regular Expression)方法超详细
Dec 30 Python
python3读取csv文件任意行列代码实例
Jan 13 Python
Python插入Elasticsearch操作方法解析
Jan 19 Python
python集成开发环境配置(pycharm)
Feb 14 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
Smarty局部缓存的几种方法简介
2014/06/17 PHP
php实现图片上传时添加文字和图片水印技巧
2020/04/18 PHP
浅谈laravel中的关联查询with的问题
2019/10/10 PHP
一些经常会用到的Javascript检测函数
2010/05/31 Javascript
javascript 获取所有id中包含某关键字的控件的实现代码
2010/11/25 Javascript
JavaScript Date对象 日期获取函数
2010/12/19 Javascript
Javascript 检测键盘按键信息及键码值对应介绍
2013/01/03 Javascript
深入探密Javascript数组方法
2015/01/08 Javascript
jquery中JSON的解析方式
2015/03/16 Javascript
JavaScript 事件绑定及深入
2015/04/13 Javascript
JavaScript中的Math.LN2属性用法详解
2015/06/12 Javascript
javascript中SetInterval与setTimeout的定时器用法
2015/08/24 Javascript
jQuery Raty 一款不错的星级评分插件
2016/08/24 Javascript
Nodejs进阶:如何将图片转成datauri嵌入到网页中去实例
2016/11/21 NodeJs
Ajax实现不刷新取最新商品
2017/03/01 Javascript
js-FCC算法-No repeats please字符串的全排列(详解)
2017/05/02 Javascript
jquery之基本选择器practice(实例讲解)
2017/09/30 jQuery
JavaScript实现单英文金山打字通
2020/07/24 Javascript
跟老齐学Python之玩转字符串(3)
2014/09/14 Python
使用python实现链表操作
2018/01/26 Python
python操作excel文件并输出txt文件的实例
2018/07/10 Python
Python制作动态字符图的实例
2019/01/27 Python
python中metaclass原理与用法详解
2019/06/25 Python
Python使用random模块生成随机数操作实例详解
2019/09/17 Python
Python range与enumerate函数区别解析
2020/02/28 Python
PyTorch-GPU加速实例
2020/06/23 Python
python中类与对象之间的关系详解
2020/12/16 Python
中国旅游网站:同程旅游
2016/09/11 全球购物
Tuckernuck官网:经典的美国品质服装、鞋子和配饰
2021/01/11 全球购物
大学毕业生最详细的自我评价分享
2013/11/18 职场文书
决心书标准格式
2014/03/11 职场文书
中学清明节活动总结
2014/07/04 职场文书
助学贷款贫困证明
2014/09/23 职场文书
2014年预算员工作总结
2014/12/05 职场文书
跳高加油稿
2015/07/21 职场文书
Oracle 11g数据库使用expdp每周进行数据备份并上传到备份服务器
2022/06/28 Oracle