python中信号量限制同一时间执行进程的个数
'''
信号量:
限制同一时间执行的进程的个数
'''
import random
import time
import multiprocessing
def goto_spa(name,semaphore):
print('{} 进入养生馆'.format(name))
#看信号灯,是否允许进入
semaphore.acquire()
#acquire,相当消费了一个许可
print("{}占了一张床".format(name))
time.sleep(random.randint(1,3))
print('{}spa完成'.format(name))
semaphore.release()
#release 相当创建了一个许可
if __name__ == '__main__':
semaphore = multiprocessing.Semaphore(2)
names = ['1','2','3','4']
for name in names:
p = multiprocessing.Process(target=goto_spa, args=(name, semaphore))
p.start()
1 进入养生馆
1占了一张床
2 进入养生馆
2占了一张床
3 进入养生馆
4 进入养生馆
2spa完成
3占了一张床
1spa完成
4占了一张床
3spa完成
4spa完成