zoukankan      html  css  js  c++  java
  • 消息队列Queue

    队列:
      先进先出
    通信原理:
      在内存中建立队列数据结构模型。多个进程都可以通过队列存入内容,取出内容的顺序和存入顺序保持一致

    函数方法:

    q = Queue(maxsize = 0)
      功能 : 创建队列对象
      参数 : maxsize : 默认表示系统自动分配队列空间
        如果传入正整数则表示最多存放多少条消息
      返回值 : 队列对象

    q.put(data,[block,timeout])
      功能:向队列中存入消息
      参数:data 存入的消息 (支持python数据类型)
        block 默认True 表示当队列满时阻塞
        设置为False 则为非阻塞
        timeout 超时时间

    data = q.get([block,timeout])
      功能: 获取队列消息
      参数:block 默认为True 表示队列空时阻塞
        设置为False则表示非阻塞
        timeout 超时时间
      返回值 : 返回获取到的消息

    q.full() 判断队列是否为满
    q.empty() 判断队列是否为空
    q.qsize() 获取队列中消息数量
    q.close() 关闭队列

    from multiprocessing import Process,Queue
    import time
    
    #创建消息队列
    q = Queue()
    
    def fun1():
        time.sleep(1)
        q.put({"a":1,"b":2})
    
    def fun2():
        time.sleep(2)
        print("收到消息", q.get())
    
    p1 = Process(target = fun1)
    p2 = Process(target = fun2)
    p1.start()
    p2.start()
    p1.join()
    p2.join()
  • 相关阅读:
    工厂方法模式
    代理模式
    观察者模式
    策略模式
    单例模式
    简单工厂模式
    lintcode:等价二叉树
    lintcode:被围绕的区域
    lintcode:二叉树的所有路径
    lintcode:快乐数
  • 原文地址:https://www.cnblogs.com/zengsf/p/9637920.html
Copyright © 2011-2022 走看看