Loading

信号量

简介

信号量:一套资源同一时间被访问的进程个数,例如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()

 

posted @ 2019-10-09 10:20  浅忆尘  阅读(106)  评论(0)    收藏  举报