本文实例讲述了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避免mysql死锁_python避免死锁方法实例分析相关推荐

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

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

  2. python asyncio回调函数_python回调函数用法实例分析

    python回调函数用法实例分析 本文实例讲述了python回调函数用法.分享给大家供大家参考.具体分析如下: 软件模块之间总是存在着一定的接口,从调用方式上,可以把他们分为三类:同步调用.回调和异步 ...

  3. python socket通信 多进程_python实现多进程通信实例分析

    操作系统会为每一个创建的进程分配一个独立的地址空间,不同进程的地址空间是完全隔离的,因此如果不加其他的措施,他们完全感觉不到彼此的存在.那么进程之间怎么进行通信?他们之间的关联是怎样的?实现原理是什么 ...

  4. python遍历文件对象_Python文件常见操作实例分析【读写、遍历】

    本文实例讲述了Python文件常见操作.分享给大家供大家参考,具体如下: 1.文件是什么? 文件是存储在外部介质上的数据或信息集合,程序中源程序.数据中保存的数据.图像中的像素数据等等: 文件是有序的 ...

  5. python进程socket通信_python实现多进程通信实例分析

    操作系统会为每一个创建的进程分配一个独立的地址空间,不同进程的地址空间是完全隔离的,因此如果不加其他的措施,他们完全感觉不到彼此的存在.那么进程之间怎么进行通信?他们之间的关联是怎样的?实现原理是什么 ...

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

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

  7. python死锁案例_python避免死锁方法实例分析

    本文实例讲述了python避免死锁方法.分享给大家供大家参考.具体分析如下: 当两个或者更多的线程在等待资源的时候就会产生死锁,两个线程相互等待. 在本文实例中 thread1 等待thread2释放 ...

  8. python装饰器实例-基于Python 装饰器装饰类中的方法实例

    title: Python 装饰器装饰类中的方法 comments: true date: 2017-04-17 20:44:31 tags: ['Python', 'Decorate'] categ ...

  9. 什么是python中子类父类_零基础入门:python中子类继承父类的__init__方法实例

    前言: 今天为大家带来的内容是零基础入门:python中子类继承父类的__init__方法实例!具有不错的参考意义,希望在此能够帮助到各位!(喜欢的话记得点赞转发关注不迷路哦) 使用Python写过面 ...

  10. python的用途实例-python中pass语句意义与作用(实例分析)

    想必大家都是刚刚才开始接触python这门语言的,今天这篇文章就来带大家来了解一下python这门语言之中常常会用到的一个语句pass语句.想必大家都很好奇python中pass作用是什么,接下来我就 ...

最新文章

  1. 2020年Java程序员不得不学习的10大技术
  2. webhook简单部署
  3. GitLab10安装-部署-汉化-备份-升级
  4. 揭秘:高盛交易员赚取10亿美元利润的神秘“利器”终于公开了
  5. idea 使用sonarlint报错解决方案
  6. 如何让百度快速收录文章
  7. 发抖音上热门最佳时间 视频MD5修改器苹果手机
  8. JDBC驱动下载地址
  9. lede usb启动_OpenWrt LEDE 自动挂载USB U盘的方法
  10. 安卓手机投射电脑屏幕 手机投屏电脑
  11. linux火狐快捷键设置,使用火狐浏览器所有的快捷键大全
  12. 掌控你的信息流:在自己的VPS上部署RSSHub
  13. 笔记本wife功能丢失,网络适配器代码56错误
  14. CDN网站加速,为什么会打不开
  15. 消除桌面上的计算机名称,Win10桌面图标有小箭头怎么去掉?Win10去掉桌面图标小箭头的方法...
  16. 服务器备案问题解决思考?
  17. java多用户商城系统架构之第一篇——总的介绍
  18. 微信小程序项目实例——摇色子
  19. matlab实现二分法解方程
  20. 【LaTex】2.5 集合论

热门文章

  1. 2021-08-23 JSON
  2. linux brk函数,Linux sbrk/brk函数使用整理
  3. 如何选择电瓶修复技术培训的品牌?
  4. 设计精美餐厅菜单的10多个技巧
  5. 网络电视机顶盒、IPTV后台内容管理系统?
  6. 如何查看固态硬盘和机械硬盘是那个盘符
  7. sonar代码检测工具安装文档
  8. idea2022修改鼠标悬浮提示时间
  9. 计算机专业可以买天选吗,计算机专业买什么本 就选搭载GeForce RTX显卡的天选
  10. 【原创】驳:三问瑞星:瑞星发现了在实验室中的病毒?