进程基于队列通信,生产者消费者模型

from multiprocessing import Queue
from multiprocessing import Process
import os

def produce(name,q):
    for i in range(10):
        pid = os.getpid()
        msg = f'这是{name}做的{i}个包子'
        q.put(msg)


def cursumer(name,q):
    try:
        for i in range(100):
            msg = f'{name}吃的{q.get(timeout=3)}'
            print(msg)
    except Exception:
        return


if __name__=='__main__':
    q = Queue()

    p1 = Process(target=produce,args=('lg',q,))
    p2 = Process(target=cursumer, args=('wx',q,))
    p1.start()
    p2.start()

队列通信引用Queue模块,先进先出原则。它有两个方法,put是往里放数据,get是取数据。当里面没数的时候,put和get都会阻塞住,知道里面有数据。timeout是等待时长,超过时限就会报错。block=True是默认阻塞不会报错,block=False是阻塞后就报错。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值