怎么理解python信号量
发表于:2025-01-17 作者:千家信息网编辑
千家信息网最后更新 2025年01月17日,本篇内容介绍了"怎么理解python信号量"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!01:信号量
千家信息网最后更新 2025年01月17日怎么理解python信号量
本篇内容介绍了"怎么理解python信号量"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!
01:信号量
1)概述:信号量是用来控制线程并发数的。
2)原理:BoundedSemaphore和Semaphore管理一个内置的计数器。每当资源释放递增时(调用acquire)计数器-1,资源消耗时递减(调用release)计数器+1。
3)调用格式:threading.BoundedSemaphore/Semaphore(value);值默认1
4)使用场景:停车位(固定的停车位,车位全部被占用则进不来;只有车子离开其余车才能进来)
5)BoundedSemaphore和Semaphore区别:前者将在调用release()时检查计数器的值是否超过了计数器的初始值,如果超过将抛出一个异常。
6)注意事项:计数器不能小于0,当计数器为0时:acquire()将阻塞线程至同步锁定状态,直到其他线程调用release()。
02:案例操作
停车场只有3个停车位。来了5辆汽车需要停车这时候就使用Semaphore来控制访问量了
只能同时允许3辆车同时进入停车场,第4辆车只有等先进入的3辆车中有车出来才可进入
import threading,time,random
semaphore=threading.Semaphore(3)#同一时间只能有3个线程处于运行状态
def run (ii):
semaphore.acquire() # 获得信号量:信号量减一
print(ii,'号车可以进入')
time.sleep(random.randint(0,10)*1)
print(ii,'号停车位释放')
semaphore.release()# 释放信号量:信号量加一
for i in range(5):#创建5个线程
t=threading.Thread(target=run,args=(i,))
t.start()
03:BoundedSemaphore和Semaphore区别案例操作
BoundedSemaphore调用时如果计数器的值超过了初始值会抛出异常;但是Semaphore不会
import threading,time,random
semaphore=threading.BoundedSemaphore(3)#同一时间只能有3个线程处于运行状态
def run (ii):
semaphore.acquire() # 获得信号量:信号量减一
print(ii,'号车可以进入')
time.sleep(random.randint(0,10)*1)
print(ii,'号停车位释放')
#***************此处高能******************
semaphore.release()# 释放信号量:信号量加一
# 再次释放信号量:信号量加一,这时超过限定的信号量数目会报错ValueError: Semaphore released too many times
semaphore.release()
#***************高能结束******************
for i in range(5):#创建5个线程
t=threading.Thread(target=run,args=(i,))
t.start()
"怎么理解python信号量"的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注网站,小编将为大家输出更多高质量的实用文章!
信号
信号量
计数器
线程
停车位
只有
案例
状态
加一
停车场
内容
同时
时间
更多
知识
资源
控制
运行
实用
学有所成
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
容百科技是属于互联网公司吗
北京优合信网络技术有效公司
文章如何录入万方数据库
tcia数据库简介
软件开发需要学编程吗
网络安全提速是多少
mac服务器管理工具软件
sqlitejsp数据库
中国网络安全周演讲
山东发展软件开发科技
6plus连不上服务器
建立企业专利数据库需要多少钱
网络安全讲座应该讲些什么
计算机网络技术需要用的书
svn 服务器软件
武汉做分布式存储服务器
青少年网络安全课
ibm服务器保修查询
fpga软件开发工具
战地5搜索服务器名
网络安全相关协会
路由器服务器设置方法
dhl软件开发
网络安全举报的电话是多少
心和网络技术有限公司
三级网络技术周跃ppt
微信电脑版 数据库
更改数据库字段类型的sql
fpga软件开发工具
怎样写网络安全宣讲稿