zoukankan      html  css  js  c++  java
  • 生产者以及消费者模式(多进程)

    code
    import time
    import random
    from multiprocessing import Process, Queue
     
    # 生产者
    def producer(q, i):
        food = 'Spam-%d' % i
        time.sleep(random.uniform(2, 5))
        timeVal = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())
        print('时间:%s	生产者:%d 生产了 %d' % (timeVal, i, i))
        q.put(food)
     
    # 消费者
    def consumer(q, i):
        while True:
            food = q.get()
            if not food:
                break
            time.sleep(random.uniform(1, 2))
            timeVal = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())
            print('时间:%s	消费者: %d	吃了 %s' % (timeVal, i, food))
     
    if __name__ == '__main__':
        q = Queue()
     
        producerPs = []
        for n in range(1, 16):
            producerPs.append(Process(target=producer, args=(q, n)))
     
        for producerP in producerPs:
            producerP.start()
     
        consumerPs = []
        for n in range(1, 3):
            consumerPs.append(Process(target=consumer, args=(q, n)))
     
        for consumerP in consumerPs:
            consumerP.start()
     
        for producerP in producerPs:
            producerP.join()
     
        for consumerP in consumerPs:
            q.put(None)
     
        for consumerP in consumerPs:
            consumerP.join()
     
        print('end')
    outputs
    macname@MacdeMacBook-Pro py % python3 cccccc.py
    时间:2020-03-23 16:12:18    生产者:6 生产了 6
    时间:2020-03-23 16:12:18    生产者:1 生产了 1
    时间:2020-03-23 16:12:19    生产者:11 生产了 11
    时间:2020-03-23 16:12:19    生产者:8 生产了 8
    时间:2020-03-23 16:12:19    生产者:9 生产了 9
    时间:2020-03-23 16:12:19    生产者:12 生产了 12
    时间:2020-03-23 16:12:20    生产者:7 生产了 7
    时间:2020-03-23 16:12:20    消费者: 1    吃了 Spam-6
    时间:2020-03-23 16:12:20    生产者:10 生产了 10
    时间:2020-03-23 16:12:20    生产者:3 生产了 3
    时间:2020-03-23 16:12:20    生产者:15 生产了 15
    时间:2020-03-23 16:12:20    生产者:13 生产了 13
    时间:2020-03-23 16:12:20    生产者:2 生产了 2
    时间:2020-03-23 16:12:20    消费者: 2    吃了 Spam-1
    时间:2020-03-23 16:12:20    生产者:4 生产了 4
    时间:2020-03-23 16:12:21    生产者:5 生产了 5
    时间:2020-03-23 16:12:21    生产者:14 生产了 14
    时间:2020-03-23 16:12:21    消费者: 1    吃了 Spam-11
    时间:2020-03-23 16:12:21    消费者: 2    吃了 Spam-8
    时间:2020-03-23 16:12:22    消费者: 1    吃了 Spam-9
    时间:2020-03-23 16:12:23    消费者: 2    吃了 Spam-12
    时间:2020-03-23 16:12:24    消费者: 1    吃了 Spam-7
    时间:2020-03-23 16:12:24    消费者: 2    吃了 Spam-10
    时间:2020-03-23 16:12:25    消费者: 1    吃了 Spam-3
    时间:2020-03-23 16:12:26    消费者: 2    吃了 Spam-15
    时间:2020-03-23 16:12:27    消费者: 1    吃了 Spam-13
    时间:2020-03-23 16:12:27    消费者: 2    吃了 Spam-2
    时间:2020-03-23 16:12:28    消费者: 1    吃了 Spam-4
    时间:2020-03-23 16:12:29    消费者: 2    吃了 Spam-5
    时间:2020-03-23 16:12:30    消费者: 1    吃了 Spam-14
    end
    macname@MacdeMacBook-Pro py %
     
     
     
     
     
     
     
     

  • 相关阅读:
    有用的java工具
    AOP在大规模软件开发项目中的应用(图)
    java并发编程实践笔记
    深入JVM系列(三)之类加载、类加载器、双亲委派机制与常见问题
    JVM相关问答
    软件架构设计的六大原则
    JVM 运行时数据区域
    JVM 类加载过程
    JVM 垃圾回收算法
    Memcached内存分配优化及使用问题
  • 原文地址:https://www.cnblogs.com/sea-stream/p/14193344.html
Copyright © 2011-2022 走看看