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 相关文章推荐
wxPython中文教程入门实例
Jun 09 Python
Python numpy 提取矩阵的某一行或某一列的实例
Apr 03 Python
Python3.遍历某文件夹提取特定文件名的实例
Apr 26 Python
python如何创建TCP服务端和客户端
Aug 26 Python
python3实现带多张图片、附件的邮件发送
Aug 10 Python
Django stark组件使用及原理详解
Aug 22 Python
Python imread、newaxis用法详解
Nov 04 Python
python redis 批量设置过期key过程解析
Nov 26 Python
python双端队列原理、实现与使用方法分析
Nov 27 Python
python获取引用对象的个数方式
Dec 20 Python
PyQt5.6+pycharm配置以及pyinstaller生成exe(小白教程)
Jun 02 Python
python如何控制进程或者线程的个数
Oct 16 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手机号码归属地查询代码(API接口/mysql)
2012/09/04 PHP
jQuery检测某个元素是否存在代码分享
2015/07/09 Javascript
javascript中$(function() {});写与不写有哪些区别
2015/08/10 Javascript
Flow之一个新的Javascript静态类型检查器
2015/12/21 Javascript
JavaScript使用delete删除数组元素用法示例【数组长度不变】
2017/01/17 Javascript
jQuery插件FusionWidgets实现的Cylinder图效果示例【附demo源码】
2017/03/23 jQuery
jquery dataTable 后台加载数据并分页实例代码
2017/06/07 jQuery
JavaScript递归算法生成树形菜单
2017/08/15 Javascript
jQuery简单实现对数组去重及排序操作实例
2017/10/31 jQuery
react-native使用leanclound消息推送的方法
2018/08/06 Javascript
vue-cli 项目打包完成后运行文件路径报错问题
2019/07/19 Javascript
JS实现“全选”和"全不选"功能代码实例
2020/02/06 Javascript
Openlayers实现图形绘制
2020/09/28 Javascript
vue 实现基础组件的自动化全局注册
2020/12/25 Vue.js
[06:35]2014DOTA2国际邀请赛 老男孩梦圆西雅图中国军团世界最强
2014/07/22 DOTA
[02:28]PWL开团时刻DAY3——Ink Ice与DeMonsTer之间的勾心斗角
2020/11/03 DOTA
跟老齐学Python之Python安装
2014/09/12 Python
Python的爬虫框架scrapy用21行代码写一个爬虫
2017/04/24 Python
浅谈tensorflow之内存暴涨问题
2020/02/05 Python
Python接口测试get请求过程详解
2020/02/28 Python
python argparse模块通过后台传递参数实例
2020/04/20 Python
使用PyQt5实现图片查看器的示例代码
2020/04/21 Python
用 Python 制作地球仪的方法
2020/04/24 Python
django form和field具体方法和属性说明
2020/07/09 Python
Python基于mediainfo批量重命名图片文件
2020/12/29 Python
跑鞋、网球鞋、网球拍、服装及装备:Holabird Sports
2016/09/19 全球购物
有750多个顶级品牌的瑞士时尚在线:ABOUT YOU
2017/01/04 全球购物
全球独特生活方式产品和礼品购物网站:AHAlife
2018/09/18 全球购物
编辑个人求职信范文
2013/09/21 职场文书
2014年元旦感言
2014/03/06 职场文书
2016元旦文艺汇演主持词
2015/07/06 职场文书
一年级语文教学随笔
2015/08/14 职场文书
2015年秋学期教研工作总结
2015/10/14 职场文书
安全生产协议书
2016/03/22 职场文书
Python pygame实现中国象棋单机版源码
2021/06/20 Python
电脑无法安装Windows 11怎么办?无法安装Win11的解决方法
2021/11/21 数码科技