zoukankan      html  css  js  c++  java
  • python 队列

    # 进城之间数据隔离
    # 进程之间通信(IPC) Inter Process communication
    # 基于文件 :同一台机器上的多个进程之间通信
    # Queue 队列
    # 基于socket的文件级别的通信来完成数据传递的
    # 基于网络 :同一台机器或者多台机器上的多进程间通信
    # 第三方工具(消息中间件)
    # memcache
    # redis
    # rabbitmq
    # kafka

    # from multiprocessing import Queue,Process
    # def pro(q):
    # for i in range(10):
    # print(q.get())
    # def son(q):
    # for i in range(10):
    # q.put('hello%s'%i)
    #
    # if __name__ == '__main__':
    # q = Queue()
    # p = Process(target=son,args=(q,))
    # p.start()
    # p = Process(target=pro, args=(q,))
    # p.start()

    # 生产者消费者模型
    # 爬虫的时候
    # 分布式操作 : celery
    # 本质 :就是让生产数据和消费数据的效率达到平衡并且最大化的效率
    # import time
    # import random
    # from multiprocessing import Queue,Process
    #
    # def consumer(q): # 消费者:通常取到数据之后还要进行某些操作
    # for i in range(10):
    # print(q.get())
    #
    # def producer(q): # 生产者:通常在放数据之前需要先通过某些代码来获取数据
    # for i in range(10):
    # time.sleep(random.random())
    # q.put(i)
    #
    # if __name__ == '__main__':
    # q = Queue()
    # c1 = Process(target=consumer,args=(q,))
    # p1 = Process(target=producer,args=(q,))
    # c1.start()
    # p1.start()

    import time
    import random
    from multiprocessing import Queue,Process

    def consumer(q,name): # 消费者:通常取到数据之后还要进行某些操作
    while True:
    food = q.get()
    if food:
    print('%s吃了%s'%(name,food))
    else:break

    def producer(q,name,food): # 生产者:通常在放数据之前需要先通过某些代码来获取数据
    for i in range(10):
    foodi = '%s%s'%(food,i)
    print('%s生产了%s'%(name,foodi))
    time.sleep(random.random())
    q.put(foodi)

    if __name__ == '__main__':
    q = Queue()
    c1 = Process(target=consumer,args=(q,'alex'))
    c2 = Process(target=consumer,args=(q,'alex'))
    p1 = Process(target=producer,args=(q,'大壮','泔水'))
    p2 = Process(target=producer,args=(q,'b哥','香蕉'))
    c1.start()
    c2.start()
    p1.start()
    p2.start()
    p1.join()
    p2.join()
    q.put(None)
    q.put(None)


















  • 相关阅读:
    磁盘调度算法
    Maven 的 学习笔记
    文档结构
    变量
    进入SQL*Plus环境 (常用命令)
    PAT甲级 1050 String Subtraction (20分)(当读一行时(gets用不了))
    PAT甲级 1095 Cars on Campus (30分)(map + 排序)
    图书管理系统
    学生成绩管理系统
    磁盘调度算法
  • 原文地址:https://www.cnblogs.com/shaohuagu/p/12274073.html
Copyright © 2011-2022 走看看