• 单生产者进程和单消费者进程


    
    '''
    初试生产者消费者模型代码
    分析:
    对象含有生产者、队列、消费者
    Queue队列模块,不适合传大文件,通常传一些消息。
    
    
    '''
    '''单生产者进程和单消费者进程'''
    #导入模块
    from  multiprocessing import Process,Queue
    
    #生产者
    def producers(q,name,food):
        # 开始生产10个包子
        for i in range(10):
            print(f'{name}生产了{food}三丰牌{i}')
    
            res=f'{food}{i}'            #包子0-9当时卡了没有默写出来
            #把生产者生产的一大堆包子打包成一个变量,然后直接put到队列的管子里(q.put(res)),等待消费者去get
    
            #创建队列
            q.put(res)
        #队列结束标识
        # q.put('我生产完毕了')
        q.put(None)
    #消费者
    def consumers(q,name):
        while True:
            # 把包子接收过来,创建接收队列
            recive = q.get()
            # 然后接收队列进行判断,如果recive是'我生产完毕了'的话,消费者就停止再继续吃包子了
            # if recive == '我生产完毕了':
            if recive is None:
                break
    
            print(f'{name}吃掉了{recive}')
    
    if __name__ == '__main__':
        #创建队列对象
        q=Queue()
        '''下面两行代码最终会报错,调用的是函数不是进程,报错内容:
            'NoneType' object has no attribute 'start'  空类型对象没有start 属性'''
        # p1=producers(q,'张三丰','狗不理包子')
        # c1=consumers(q,'luzhaoshan')
    
        p1 = Process(target=producers,args=(q,'张三丰','狗不理包子'))     #此人生产者
        c1 = Process(target=consumers,args=(q,'luzhaoshan'))             #此人消费者
        p1.start()
        c1.start()
    
    '''
    
    
    
    
  • 相关阅读:
    docker学习笔记及hadoop集群搭建
    Zookeeper+Kafka+Storm+HDFS实践
    zookeeper集群搭建
    scala学习笔记——特质
    scala学习笔记-集合
    scala学习笔记-隐式转换和隐式参数
    RDD 重新分区,排序 repartitionAndSortWithinPartitions
    scala学习笔记——操作符
    JAVA基础系列(一) 概述与相关概念
    网络收藏夹
  • 原文地址:https://www.cnblogs.com/ludundun/p/11529657.html
Copyright © 2020-2023  润新知