本文实例讲述了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避免死锁方法实例分析

本文地址: http://www.cppcns.com/jiaoben/python/125900.html

python死锁案例_python避免死锁方法实例分析相关推荐

  1. python多功能电子钟_python gui - PyQt4 精彩实例分析之电子钟

    PyQt4 精彩实例分析之电子钟,当然在写实例之前要先安装PyQt4模块.from PyQt4.QtGui import * from PyQt4.QtCore import * import sys ...

  2. python死锁案例_Python 多线程死锁

    场景是这样的:开启多个线程访问外部 api ,过一段时间,发现所有线程死锁. 环境: python2.6.7 centos7.1 urllib2 , suse 下无此问题. dump 如下: Thre ...

  3. python正则表达式案例_Python正则表达式使用经典实例

    regex=ur"" #正则表达式 match = re.search(regex, subject) if match: # match start: match.start() ...

  4. python局部变量函数_python函数局部变量用法实例分析

    本文实例讲述了python函数局部变量用法.分享给大家供大家参考.具体分析如下: 当你在函数定义内声明变量的时候,它们与函数外具有相同名称的其他变量没有任何关系,即变量名称对于函数来说是 局部 的.这 ...

  5. python accessiblechildren用法_python类继承用法实例分析

    本文实例讲述了python类继承用法.分享给大家供大家参考.具体如下: help('object') # test class Class1(object): """ C ...

  6. python分词设计_Python smallseg分词用法实例分析

    这篇文章主要介绍了Python smallseg分词用法,以实例形式分析了Python实现分析的相关技巧,需要的朋友可以参考下 本文实例讲述了Python smallseg分词用法.分享给大家供大家参 ...

  7. python函数形参_python函数形参用法实例分析

    本文实例讲述了python函数形参用法.分享给大家供大家参考.具体如下: 函数形参: 函数取得的参数是你提供给函数的值,这样函数就可以利用这些值 做 一些事情.这些参数就像变量一样,只不过它们的值是在 ...

  8. python装饰器函数-Python函数装饰器常见使用方法实例详解

    本文实例讲述了Python函数装饰器常见使用方法.分享给大家供大家参考,具体如下: 一.装饰器 首先,我们要了解到什么是开放封闭式原则? 软件一旦上线后,对修改源代码是封闭的,对功能的扩张是开放的,所 ...

  9. python怎么模拟浏览器交互_干货分享:python爬虫模拟浏览器的两种方法实例分析(赶紧收藏)...

    今天为大家带来的内容是:干货分享:python爬虫模拟浏览器的两种方法实例分析(赶紧收藏) 文章主要介绍了python爬虫模拟浏览器的两种方法,结合实例形式分析了Python爬虫模拟浏览器的两种常见操 ...

最新文章

  1. html div坐标定位,html div位置和显示
  2. HDU5886 Tower Defence 【两遍树形dp】【最长链预处理】
  3. 科普大V河森堡:用科学的方法回答哲学问题
  4. 盘点Windows10系统的使用小技巧三 —— 虚拟桌面
  5. python renames_Python os.renames() 方法
  6. 理解分布式系统中的缓存架构(下)
  7. sklearn自学指南(part7)--使用手册的目录
  8. 【Python生成器与迭代器的区别】
  9. Java设计模式学习总结(3)——创建型模式之抽象工厂模式
  10. Asp.net使用JQuery实现评论的无刷新分页及分段延迟加载效果
  11. 20180326-1777-1.2-UMLDOC
  12. 物联网——射频识别技术的应用
  13. VTK学习笔记(二十三)vtk空间几何变换
  14. python修改系统时间_python修改操作系统时间的方法
  15. 前沿计算技术于推动设计技术发展
  16. JS - 计算直角三角形的边长及角度
  17. Java 对象 的 比较 - 细节狂魔
  18. 下载维基百科wikipedia!
  19. excel查找命令_快速查找Excel功能区命令
  20. XP系统常用的登录密码方法破解(一共9种)

热门文章

  1. python数据处理不用编程_用Python玩转数据数据处理相关小例编程题
  2. StringBuilder的原理
  3. mysql查询锁表语句和kill对应的线程
  4. 虚函数实现多态---C++
  5. mysql慢日志优化_Mysql优化-慢sql日志
  6. 2.1.2 操作系统之进程的状态(运行、就绪、阻塞、创建、终止)及转换(就绪-运行、运行-就绪、运行-阻塞、阻塞-就绪)
  7. restful-api接口的设计规范介绍
  8. Java内存泄露和内存溢出、JVM命令行工具、.JDK可视化工具、Java Class文件
  9. 类加载器、双亲委派模型
  10. c#如何通过ftp上传文件_定时上传文件到ftp,如何使用工具定时上传文件到ftp