'''一 信号量信号量也是一把锁,可以指定信号量为5,对比互斥锁同一时间只能有一个任务抢到锁去执行,信号量同一时间可以有5个任务拿到锁去执行,如果说互斥锁是合租房屋的人去抢一个厕所,那么信号量就相当于一群路人争抢公共厕所,公共厕所有多个坑位,这意味着同一时间可以有多个人上公共厕所,但公共厕所容纳的人数是一定的,这便是信号量的大小'''from threading import Thread, Semaphoreimport threadingimport timedef fun(): sm.acquire() print('%s is la'%threading.current_thread().getName) time.sleep(3) sm.release()if __name__ == '__main__': for i in range(50): sm = Semaphore(5) t = Thread(target=fun) t.start() '''解析Semaphore管理一个内置的计数器,每当调用acquire()时内置计数器-1;调用release() 时内置计数器+1;计数器不能小于0;当计数器为0时,acquire()将阻塞线程直到其他线程调用release()。'''
来源:https://www.cnblogs.com/yuexijun/p/11559642.html