• 生产者消费模型


    """
    生产者消费者模型(celery消息队列)
    生产者:生产的数据(做包子的)
    消费者:处理数据的(吃包子的)
    生产者消费模型是用来平衡生产者与消费者之间的能力的,例如有时候消费者消费的速度太快,
    生产者来不及生产那么多的数据,或者有时候消费者的消费速度太慢.生产者生产的数据大量的累积在一起
    有了这个生产者消费模型之后,就可以平衡双方的能力了
    """
    from multiprocessing import Process,Queue,JoinableQueue
    import time
    import random


    def producer(name,food,q):
    # 产生,生产数据的,生产好数据之后就放到管道中去,其他某一个进程就可以取用了
    for i in range(3):
    data = '%s生产了%s%s'%(name,food,i)
    time.sleep(random.randint(1,3))
    q.put(data) ###放到管道q中去
    print(data)


    def consumer(name,q):
    while True:
    data = q.get()
    if data == None:break
    time.sleep(random.randint(1,3))
    print('%s吃了%s' % (name,data))
    q.task_done() # 已经从队里中拿到数据 并且处理完毕了


    if __name__ == '__main__':
    q = JoinableQueue()
    p = Process(target=producer,args=('大厨jason','肉包子',q))
    p1 = Process(target=producer,args=('配菜owen','馒头',q))
    c = Process(target=consumer,args=('吃货egon',q))
    c1 = Process(target=consumer,args=('坑货尚老师',q))
    p.start()
    p1.start()
    c.daemon = True ##守护进程
    c1.daemon = True ##守护进程
    c.start()
    c1.start()

    p.join()
    p1.join()
    q.join() # 等带队列中所有的数据都被取干净





  • 相关阅读:
    MySQL常用命令记录
    VM新安装centos7无法连接网络的问题
    nginx + tomcat实现负载均衡
    Redis集群分布(Windows版)
    7.2 基础知识ArrayMap
    7.1 基础知识Android消息处理机制
    6.5 Android硬件访问服务使用反射
    6.4 Android硬件访问服务编写HAL代码
    6.3 Android硬件访问服务APP代码
    6.2、Android硬件访问服务编写系统代码
  • 原文地址:https://www.cnblogs.com/1832921tongjieducn/p/11312585.html
Copyright © 2020-2023  润新知