# 信号量:
# 跟 锁的概念一样 ,只不过可以设置钥匙的数量
import time
import random
from multiprocessing import Process
from multiprocessing import Semaphore
def fn(i,sem):
sem.acquire() # 拿钥匙
print('%s拿到钥匙!!!!!!'%(i))
time.sleep(random.randint(1,5))
print('%s归还钥匙-----'%(i))
sem.release() # 还钥匙
if __name__ == '__main__':
sem = Semaphore(4)
for i in range(10):
p = Process(target=fn,args=(i,sem))
p.start()
sem = Semaphore(4)
sem.acquire()
print('第一个人')
sem.acquire()
print('第二个人')
sem.acquire()
print('第三个人')
sem.acquire()
print('第四个人')
sem.acquire()
print('第五个人') # 第五个无法打印
# 因为只有四把钥匙,只能有四个进程进去 , 当前进程时第五个 所有进不去