Python考试题--第70道题--什么是信号量,怎样使用信号量--2022年04月25日
原创目录
1.信号量的定义:
1、信号量:
最古老的原语之一是记录资源消耗的计数器。当资源被释放时,计数器递增。当请求资源时,计数器递减。可以认为信号量代表资源是否可用。
2信号量控制对资源的访问次数。
2.如何使用信号量:
1,需要介绍方法:from threading import BoundedSemaphore
2,设置您可以申请资源的最大次数。
3,如果没有要申请的资源(value的值为0),请再次拨打acquire方法,则将被阻止。
4,申请资源设置参数的方法False,semaphore.acquire(False) ,如果没有申请成功,则退还。False。
5、emaphore.release(), 如果没有要释放的资源,如果再次释放,则会报告错误。
from threading import BoundedSemaphore
MAX = 3
semaphore = BoundedSemaphore(MAX) # 最大值可适用3次资源
print("可以认领的剩余资源数量:",semaphore._value)
# 第1子应用程序资源
semaphore.acquire()
print("可以认领的剩余资源数量:",semaphore._value)
# 第2子应用程序资源
# semaphore.acquire()
print(semaphore.acquire())
print("可以认领的剩余资源数量:",semaphore._value)
# 第3子应用程序资源
semaphore.acquire()
print("可以认领的剩余资源数量:",semaphore._value)
# 第4子应用程序资源,如果没有资源可以申请(value的值为0),请再次拨打acquire方法,则将被阻止。
# semaphore.acquire()
print(semaphore.acquire(False)) # 如果申请不成功,将被退还。False。
# 开始释放资源
print("开始释放资源")
semaphore.release()
print("可以认领的剩余资源数量:",semaphore._value)
semaphore.release()
print("可以认领的剩余资源数量:",semaphore._value)
semaphore.release()
print("可以认领的剩余资源数量:",semaphore._value)
# emaphore.release() # 如果没有要释放的资源,如果再次释放,则会报告错误。
print("可以认领的剩余资源数量:",semaphore._value)
执行结果如下:

版权声明
所有资源都来源于爬虫采集,如有侵权请联系我们,我们将立即删除
itfan123






