信号量的理解Semaphore

信号量的概念和锁很像,不过它是一次给你好几把锁,这样就可以实现同时让 限定个数的进程来获取某个资源,看下面的代码

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()

猜你喜欢

转载自blog.csdn.net/BobChill/article/details/83929854