十、信号量Semaphore

信号量Semaphore

信号量再不同的阶段可能对应不同的技术点

在并发编程中信号量指的是锁!!!

"""
如果我们将互斥锁比喻成一个厕所的话
那么信号量就当于多个厕所

"""

Semaphore管理一个内置的计数器, 每当调用acquire()时内置计数器-1; 调用release() 时内置计数器+1; 计数器不能小于0;当计数器为0时,acquire()将阻塞线程直到其他线程调用release()。

  1. 语法:
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()
posted @ 2021-06-03 23:46  zzwYYYYYY  阅读(46)  评论(0)    收藏  举报