Python考试题--第70道题--什么是信号量,怎样使用信号量--2022年04月25日

原创
小哥 3年前 (2022-10-29) 阅读数 5 #大杂烩

目录

1.信号量的定义:

1、信号量:

2信号量控制对资源的访问次数。

2.如何使用信号量:


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)

执行结果如下:

版权声明

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