zoukankan      html  css  js  c++  java
  • 有几个消费者就需要发送几次结束信号

    code
    from multiprocessing import Process,Queue
    import time,random,os
    def consumer(q):
        while True:
            res=q.get()
            if res is None:break #收到结束信号则结束
            time.sleep(random.randint(1,3))
            print('%s吃掉了 %s' %(os.getpid(),res))
     
    def producer(name,q):
        for i in range(2):
            time.sleep(random.randint(1,3))
            res='%s%s' %(name,i)
            q.put(res)
            print('%s生产了 %s' %(os.getpid(),res))
     
    if __name__ == '__main__':
        q=Queue()
        #生产者们:即厨师们
        p1=Process(target=producer,args=('A',q))
        p2=Process(target=producer,args=('B',q))
        p3=Process(target=producer,args=('C',q))
     
        #消费者们:即吃货们
        c1=Process(target=consumer,args=(q,))
        c2=Process(target=consumer,args=(q,))
     
        #开始
        p1.start()
        p2.start()
        p3.start()
        c1.start()
        c2.start()
        
        p1.join() #必须保证生产者全部生产完毕,才应该发送结束信号
        p2.join()
        p3.join()
        q.put(None) #有几个消费者就应该发送几次结束信号None
        q.put(None) #发送结束信号
        print('')
    outputs
    macname@MacdeMacBook-Pro py % python3 cccccc.py
    58516生产了 A0
    58518生产了 C0
    58516生产了 A1
    58517生产了 B0
    58517生产了 B1
    58519吃掉了 A0
    58519吃掉了 A1
    58518生产了 C1
    58520吃掉了 C0
    主
    58519吃掉了 B0
    58519吃掉了 C1
    58520吃掉了 B1
    macname@MacdeMacBook-Pro py %
     
     
     
     
     
     
     
     
     
     

  • 相关阅读:
    Skimage=scikit-image SciKit 包的模块(转载)
    python day12
    python day11
    python day10
    python day9
    python day8
    python day7
    python day6
    python 第五天
    python 第四天
  • 原文地址:https://www.cnblogs.com/sea-stream/p/14193776.html
Copyright © 2011-2022 走看看