信号量
简介
信号量:一套资源同一时间被访问的进程个数,例如4个,那么就算有8条路也就只有4辆车跑
例如厕所的单间,一次就可以容纳4人
所以信号量的本质也是锁,只不过是多把锁
信号量也是用到了锁,只不过里面多了一个计数器
进程和线程都有信号量,但是用的不多.
from multiprocessing import Semaphore from multiprocessing import Process from threading import Thread,Semaphore import time import random def func(sem,i): sem.acquire() print("用户%s进入了房间" % i) time.sleep(random.randint(60,150)) print("用户%sleft" % i) sem.release() sem = Semaphore(3) # 三把钥匙,后面就和锁一样了,将sem传给多个进程,申青锁acquire if __name__ == "__main__": for i in range(10): p = Process(target=func,args=(sem,i)) p.start()
看十遍不如自己写一遍!巩固基础,纵横开拓!