信号量的概念和锁很像,不过它是一次给你好几把锁,这样就可以实现同时让 限定个数的进程来获取某个资源,看下面的代码
from multiprocessing import Process, Semaphore
import random
import time
def ktv(i,sem):
sem.acquire()
print("%s walked in ktv"%i)
time.sleep(random.randint(6,12)
print("%s walked out ktv"%i)
sem.release()
if __name__ =="__main__":
sem = Semaphore(4)
#同时只让4个进程获得锁,第五个想要入ktv只有等4人中有其中一个先出来释放锁
for i in range(20):
process = Process(target=ktv, args=(e,sem))
process.start()