信号量(信号灯集)
- 通信原理
给定一个数量对多个进程可见。多个进程都可以操作该数量增减,并根据数量值决定自己的行为。
- 实现方法
from multiprocessing import Semaphore
sem = Semaphore(num)
功能 : 创建信号量对象
参数 : 信号量的初始值
返回值 : 信号量对象
sem.acquire() 将信号量减1 当信号量为0时阻塞
sem.release() 将信号量加1
sem.get_value() 获取信号量数量
'''
信号量
'''
from multiprocessing import Semaphore,Process
from time import sleep
import os
#创建信号量
#服务程序最多允许三个进程同时执行事件
sem = Semaphore(3)
def handle():
print("%d 想执行时间"%os.getpid())
# 想执行事件,必须获取信号量
sem.acquire() #减少信号量
print("%d 开始执行操作"%os.getpid())
sleep(3)
print("%d 完成操作"%os.getpid())
sem.release() #增加信号量