python限制进程数_Python连载36-线程数量限制、Timer、可重入锁
一、允许一个资源最多由几个线程同时进行
命令行:threading.Semaphore(个数)
代表现在最多有几个线程可以进行操作
importthreadingimporttime#参数定义了最多几个线程可以使用资源
semaphore= threading.Semaphore(3)#这里就是指最多有三个线程可以进行操作
deffunc():ifsemaphore.acquire():for i in range(2):print(threading.current_thread().getName() + "get semapore")
time.sleep(5)
semaphore.release()print(threading.current_thread().getName() + "release semaphore")for i in range(8):
t1= threading.Thread(target=func,args=())
t1.start()
二、Timer讲解
格式:threading.Timer(时间间隔,函数)
代表这个函数在“时间间隔”的时间之后启动
deffunc2():print("I am running.....")
time.sleep(3)print("I an done.......")if __name__ == "__main__":
t2= threading.Timer(6,func2) #代表6秒之后开始启动线程func2
t2.start()
i=0whileTrue:print("{0}*********".format(i))
time.sleep(3)
i+= 1
三、可重入锁
1.一个锁可以被一个线程多次申请
2.主要解决递归调用的时候哦,需要申请锁的情况,可以防止被锁住,重新申请
classMyThread(threading.Thread):defrun(self):globalnum
time.sleep(1)if mutex.acquire(1):
num= num+1msg= self.name + "set num to"+str(num)print(msg)
mutex.acquire()
mutex.release()
mutex.release()deftest():for i in range(5):
t3=MyThread()
t3.start()if __name__ == "__main__":
num=0
mutex= threading.RLock()#可重入锁
test()
解释:我们的线程可以直接进行,不会因为一个申请了,就会被阻塞,依然还可以申请这把锁
四、源码
d25_4_Rlock.py
https://github.com/ruigege66/Python_learning/blob/master/d25_4_Rlock.py
2.CSDN:https://blog.csdn.net/weixin_44630050(心悦君兮君不知-睿)
3.博客园:https://www.cnblogs.com/ruigege0000/
4.欢迎关注微信公众号:傅里叶变换,后台回复”礼包“,获取大数据学习资料
python限制进程数_Python连载36-线程数量限制、Timer、可重入锁相关推荐
- 第14章 多线程(3) 线程并发问题与可重入锁
前言 这是线程真正开始变得有意思的部分,各位学习前面的概念头昏脑胀了没?是时候来玩一玩了.线程同步是什么呢? 相当于一个很有意思的游戏,玩的好的随手编辑几句,性能杠杠的,众人惊为天人,纷纷膜拜(心中O ...
- python如何使用多线程_python多线程与线程
进程与线程的概念 进程 考虑一个场景:浏览器,网易云音乐以及notepad++ 三个软件只能顺序执行是怎样一种场景呢?另外,假如有两个程序A和B,程序A在执行到一半的过程中,需要读取大量的数据输入(I ...
- python锁有哪几种_python 可重入锁有什么用?
可重入锁:支持在同一线程中多次请求同一资源 import threading import time class MyThread(threading.Thread): def run(self): ...
- python多线程编程(4): 死锁和可重入锁
From: http://www.cnblogs.com/holbrook/archive/2012/03/08/2385449.html 在线程间共享多个资源的时候,如果两个线程分别占有一部分资源并 ...
- java 变量锁_并发编程高频面试题:可重入锁+线程池+内存模型等(含答案)
对于一个Java程序员而言,能否熟练掌握并发编程是判断他优秀与否的重要标准之一.因为并发编程是Java语言中最为晦涩的知识点,它涉及操作系统.内存.CPU.编程语言等多方面的基础能力,更为考验一个程序 ...
- 【Java 并发编程】多线程、线程同步、死锁、线程间通信(生产者消费者模型)、可重入锁、线程池
并发编程(Concurrent Programming) 进程(Process).线程(Thread).线程的串行 多线程 多线程的原理 多线程的优缺点 Java并发编程 默认线程 开启新线程 `Ru ...
- 【并发编程】线程锁--Synchronized、ReentrantLock(可重入锁)
在说锁之前,我们要明白为什么要加锁,不加锁会怎样? 在并发编程中,很容易出现线程安全问题,接下来我们看个很经典的例子--银行取钱,来看一下有关线程安全的问题. 取钱的流程可以分为一下几个步骤: 1.用 ...
- python threading lock_python threading之死锁和可重入锁
一.死锁 简单来说,死锁是一个资源被多次调用,而多次调用方都未能释放该资源就会造成死锁,这里结合例子说明下两种常见的死锁情况. 1.迭代死锁 该情况是一个线程"迭代"请求同一个资源 ...
- python学习笔记-死锁与递归锁(可重入锁)
本文为了说明例子,用中文作为变量写在了程序里面,一般编程最好不要那么写 本文目录 死锁 递归锁(可重入锁) 代码实现 死锁 死锁是指两个或两个以上的进程在执行过程中,由于竞争资源或者由于彼此通信而造成 ...
最新文章
- php获取等于符号后面的参数,php获取URL中带#号等特殊符号参数的解决方法
- 很好的FireFox addin
- TaintDroid深入剖析之启动篇
- powershell 备份文件脚本
- CodeForces - 1335E2 Three Blocks Palindrome (hard version)(思维)
- 别再无脑wwm了!在下游任务中不一定有效!
- Linux内核中流量控制(4)
- Java任务调度框架Quartz教程实例
- git cherry-pick合并某个commit
- 30个Eclipse键盘快捷键大全,让你工作效率翻倍
- 云脉档案管理系统助力档案信息化建设
- Antd组件库的使用
- linux添加163邮箱,centos 7 mailx配置163邮箱发送邮件
- 【SVN】windows SVN安装使用教程(服务器4.3.4版本/客户端1.11.0版本)
- 22岁俄罗斯“天才少女”加入华为!曾获「编程界奥赛」冠军!
- 认认真真推荐9个高质量公众号
- php网页转html网页怎么弄
- win7的虚拟机版优化
- String字符串GBK转UTF8
- 杠杆炒股利息一般是多少
热门文章
- C语言中 e3是什么意思,fib在c语言中是什么意思?
- java 多态 ppt下载_java继续多态.ppt
- Windows Docs
- PHP开发微信小程序推广解决方案
- VR实景导航拯救“路痴焦虑症”
- 自律的人比随性的人更优秀吗?
- NUnit使用详解(一)
- 超级课程表原理解析(如何获取网页内容)
- 在外租房子,切记九点
- QQ手机精灵 http://www.apkbus.com/blog-33641-44366.html