十、信号量Semaphore
信号量Semaphore
信号量再不同的阶段可能对应不同的技术点
在并发编程中信号量指的是锁!!!
"""
如果我们将互斥锁比喻成一个厕所的话
那么信号量就当于多个厕所
"""
Semaphore管理一个内置的计数器, 每当调用acquire()时内置计数器-1; 调用release() 时内置计数器+1; 计数器不能小于0;当计数器为0时,acquire()将阻塞线程直到其他线程调用release()。
- 语法:
from threading import Semaphore
mutex = Semaphore([value])
'''
参数介绍:
value:默认值为1,填入一个int类型的数据,表示允许同时获取该锁的线程数
'''
一、案例:使用Semaphore
from threading import Thread, Semaphore
import time
import random
sm = Semaphore(5) # 括号内写数字,数字代表最大可以有五个线程获得semaphore,即可以限制最大连接数为5
def task(name):
sm.acquire()
print('{} 正在使用semaphore'.format(name))
time.sleep(3)
sm.release()
if __name__ == '__main__':
for i in range(20):
t = Thread(target=task, args=('伞兵{}号'.format(i), ))
t.start()

浙公网安备 33010602011771号