python之递归锁【Rlock】
# 递归锁:就是一把锁中还有一把小锁,比如学校的大门口有一个大锁,学校里的
#每个教室也有一把小锁,以后所有的锁都用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】相关推荐
- Python多线程——递归锁RLOCK
# with--自动打开自动关闭 import threading import timeclass Test:rlock=threading.RLock()def __init__(self):se ...
- python中gil锁和线程锁_Python线程——GIL锁、线程锁(互斥锁)、递归锁(RLock)...
GIL锁 计算机有4核,代表着同一时间,可以干4个任务.如果单核cpu的话,我启动10个线程,我看上去也是并发的,因为是执行了上下文的切换,让看上去是并发的.但是单核永远肯定时串行的,它肯定是串行 ...
- 线程 守护线程 递归锁
------------------------------方法不对,功力全废;做事讲方法,做人讲原则. # # ------------------------------------------- ...
- 036-2018-1028 线程 效率对比 数据共享 同步锁死锁递归锁 守护线程 信号量
笔记 昨日内容回顾: 队列:Queue 管道 : Pipe ,recv消息的时候 OSError,EOFError,数据不安全的 Manager : 共享数据 , 数据不安全 , 加锁 进程池 : P ...
- python多线程之线程锁(Lock)和递归锁(RLock)实例
一.线程锁 Threading模块为我们提供了一个类,Threading.Lock锁.我们创建一个该类对象,在线程函数执行前,"抢占"该锁,执行完成后,"释放" ...
- python 线程死锁_python线程死锁与递归锁
死锁现象 所谓死锁: 是指两个或两个以上的进程或线程在执行过程中,因争夺资源而造成的一种互相等待的现象,若无外力作用,它们都将无法推进下去. 此时称系统处于死锁状态或系统产生了死锁,这些永远在互相等待 ...
- 11.python并发入门(part4 死锁与递归锁)
一.关于死锁. 死锁,就是当多个进程或者线程在执行的过程中,因争夺共享资源而造成的一种互相等待的现象,一旦产生了死锁,不加人工处理,程序会一直等待下去,这也被称为死锁进程. 下面是一个产生" ...
- python 多线程讲解(如何实现多线程,递归锁,互斥锁,信号量,事件等)
什么是线程 线程(Thread)也叫轻量级进程,是操作系统能够进行运算调度的最小单位,它被包涵在进程之中,是进程中的实际运作单位.线程自己不拥有系统资源,只拥有一点儿在运行中必不可少的资源,但它可与同 ...
- python基础--GIL全局解释器锁、Event事件、信号量、死锁、递归锁
ps:python解释器有很多种,最常见的就是C python解释器 GIL全局解释器锁: GIL本质上是一把互斥锁:将并发变成串行,牺牲效率保证了数据的安全 用来阻止同一个进程下的多个线程的同时执行 ...
最新文章
- poj 3740 Easy Finding
- 1.2.1 分层结构 协议 接口 服务
- JSP传递值给servlet的方式
- Java中实现根据一个List中的数据的两个属性相同划分为同一类
- C++设计模式--模板方法模式
- openlayers实例_介绍OpenLayers
- pythonjson构建二维数组_python后台获取ajax传递的二维数组,保持原有数据结构不变...
- 使用gulp构建前端(三)
- 作者:林霄(1988-),男,上海交通大学博士生,主要研究方向为大数据网络和网络优化。...
- Linux基础学习一:初步认识linux
- iframe-父子-兄弟页面相互传值(jq和js两种方法)
- Exchange Server 2013 OWA IIS重定向
- 第一季度VR市场报告出炉,中国市场份额下降至全球第三
- 西电计算机考研数学,西安电子科技大学21考研数学高分上岸学长经验分享
- SparkSQL案例-图书信息分析
- oracle其他数据对象 --- 视图(10级学员 韩晓爽课堂总结)
- ISO 8583协议-银行交易的标准
- RealtekAudioControl声卡控制面板下载
- 嵌入式系统开发笔记91:认识ARM微控制器架构
- LC振荡器稳定度与品质因数的关系