# 递归锁:就是一把锁中还有一把小锁,比如学校的大门口有一个大锁,学校里的
#每个教室也有一把小锁,以后所有的锁都用rlock就可以了,不要用lock,尤其是多层锁的时候,必须要用递归锁
import threading
import timedef run1():print("grab the first part data")lock.acquire()global num1num1 += 1lock.release()return num1def run2():print("grab the second part data")lock.acquire()global num2num2 += 1lock.release()return num2def run3():lock.acquire()res1 = run1()print("--------between run1 and run2-------")res2 = run2()lock.release()print("函数run1--->",res1,"函数run2--->",res2)if __name__ == '__main__':num1 = 0num2 = 0lock = threading.RLock()for i in range(5):t = threading.Thread(target=run3)t.start()while threading.active_count() != 1:print("剩余的线程数;[%s]" %threading.active_count())
else:print("all thread is down")print(num1,num2)

  

转载于:https://www.cnblogs.com/bainianminguo/p/7253925.html

python之递归锁【Rlock】相关推荐

  1. Python多线程——递归锁RLOCK

    # with--自动打开自动关闭 import threading import timeclass Test:rlock=threading.RLock()def __init__(self):se ...

  2. python中gil锁和线程锁_Python线程——GIL锁、线程锁(互斥锁)、递归锁(RLock)...

    GIL锁 ​ 计算机有4核,代表着同一时间,可以干4个任务.如果单核cpu的话,我启动10个线程,我看上去也是并发的,因为是执行了上下文的切换,让看上去是并发的.但是单核永远肯定时串行的,它肯定是串行 ...

  3. 线程 守护线程 递归锁

    ------------------------------方法不对,功力全废;做事讲方法,做人讲原则. # # ------------------------------------------- ...

  4. 036-2018-1028 线程 效率对比 数据共享 同步锁死锁递归锁 守护线程 信号量

    笔记 昨日内容回顾: 队列:Queue 管道 : Pipe ,recv消息的时候 OSError,EOFError,数据不安全的 Manager : 共享数据 , 数据不安全 , 加锁 进程池 : P ...

  5. python多线程之线程锁(Lock)和递归锁(RLock)实例

    一.线程锁 Threading模块为我们提供了一个类,Threading.Lock锁.我们创建一个该类对象,在线程函数执行前,"抢占"该锁,执行完成后,"释放" ...

  6. python 线程死锁_python线程死锁与递归锁

    死锁现象 所谓死锁: 是指两个或两个以上的进程或线程在执行过程中,因争夺资源而造成的一种互相等待的现象,若无外力作用,它们都将无法推进下去. 此时称系统处于死锁状态或系统产生了死锁,这些永远在互相等待 ...

  7. 11.python并发入门(part4 死锁与递归锁)

    一.关于死锁. 死锁,就是当多个进程或者线程在执行的过程中,因争夺共享资源而造成的一种互相等待的现象,一旦产生了死锁,不加人工处理,程序会一直等待下去,这也被称为死锁进程. 下面是一个产生" ...

  8. python 多线程讲解(如何实现多线程,递归锁,互斥锁,信号量,事件等)

    什么是线程 线程(Thread)也叫轻量级进程,是操作系统能够进行运算调度的最小单位,它被包涵在进程之中,是进程中的实际运作单位.线程自己不拥有系统资源,只拥有一点儿在运行中必不可少的资源,但它可与同 ...

  9. python基础--GIL全局解释器锁、Event事件、信号量、死锁、递归锁

    ps:python解释器有很多种,最常见的就是C python解释器 GIL全局解释器锁: GIL本质上是一把互斥锁:将并发变成串行,牺牲效率保证了数据的安全 用来阻止同一个进程下的多个线程的同时执行 ...

最新文章

  1. poj 3740 Easy Finding
  2. 1.2.1 分层结构 协议 接口 服务
  3. JSP传递值给servlet的方式
  4. Java中实现根据一个List中的数据的两个属性相同划分为同一类
  5. C++设计模式--模板方法模式
  6. openlayers实例_介绍OpenLayers
  7. pythonjson构建二维数组_python后台获取ajax传递的二维数组,保持原有数据结构不变...
  8. 使用gulp构建前端(三)
  9. 作者:林霄(1988-),男,上海交通大学博士生,主要研究方向为大数据网络和网络优化。...
  10. Linux基础学习一:初步认识linux
  11. iframe-父子-兄弟页面相互传值(jq和js两种方法)
  12. Exchange Server 2013 OWA IIS重定向
  13. 第一季度VR市场报告出炉,中国市场份额下降至全球第三
  14. 西电计算机考研数学,西安电子科技大学21考研数学高分上岸学长经验分享
  15. SparkSQL案例-图书信息分析
  16. oracle其他数据对象 --- 视图(10级学员 韩晓爽课堂总结)
  17. ISO 8583协议-银行交易的标准
  18. RealtekAudioControl声卡控制面板下载
  19. 嵌入式系统开发笔记91:认识ARM微控制器架构
  20. LC振荡器稳定度与品质因数的关系

热门文章

  1. redis 用中文做key_推荐一款Redis客户端工具
  2. 你应该更新的Java知识
  3. 性能分析工具 Android TraceView
  4. GitHub优秀开源项目收集
  5. 计算机动画课程设计,计算机动画课程设计.doc
  6. js正则贪婪模式_C# 正则表达式贪婪模式案例
  7. arduino上传项目出错_Arduino入门前你该知道的事儿
  8. java将clob类型文件写到磁盘_Java对Oracle中Clob类型数据的读取和写入
  9. k8s的kubectl命令补全
  10. Linux脚本之定时清空文件内容