1、信号量

给定一定的数量的信号量,对多个进程可见,并且多个进程根据信号量多少确定不同的行为

2、sem = Semaphore(num)

功能 : 创建信号量对象


参数 : 信号量的初始值

返回 : 信号量对象

3、sem.acquire()

将信号量数量减1 ,当数量为0则阻塞

4、sem.release()

将信号量数量加1

5、sem.get\_value()

获取当前信号量的值

from multiprocessing import Semaphore,Process
from time import sleep
import os
import random

#创建信号量对象 初始为3
sem = Semaphore(3)

def fun():
    print("进程 %d 等待信号量"%os.getpid())
    #消耗一个信号量
    sem.acquire()
    print("进程 %d 消耗了1个信号量"%os.getpid())
    sleep(random.randint(2,5))
    sem.release()
    print("进程 %d 添加了1个信号量"%os.getpid())

jobs = []

for i in range(4):
    p = Process(target = fun)
    jobs.append(p)
    p.start()

for i in jobs:
    i.join()

#结果
进程 4268 等待信号量
进程 4268 消耗了1个信号量
进程 4269 等待信号量
进程 4269 消耗了1个信号量
进程 4270 等待信号量
进程 4270 消耗了1个信号量
进程 4271 等待信号量
进程 4268 添加了1个信号量
进程 4271 消耗了1个信号量
进程 4270 添加了1个信号量
进程 4271 添加了1个信号量
进程 4269 添加了1个信号量

标签: 进程, import, 间通信, 信号量, os, sem, Semaphore

相关文章推荐

添加新评论,含*的栏目为必填