zoukankan      html  css  js  c++  java
  • python

    消息队列分类

    1.先进先出

    2.后进先出

    3.优先级队列

    4.双向队列

    1.先进先出

    import queue
    q = queue.Queue(2) #队列最大长度
    q.put(11)
    q.put(22)
    print(q.qsize())  #获取队列的个数
    print(q.get())
    print(q.get())
    #先进先出队列
    #put放数据,block是否阻塞,timeout = 阻塞时的超时时间
    #get 取数据,默认阻塞。block是否阻塞,timeout阻塞时的超时时间
    #队列最大长度
    #qsize()真实个数
    #maxsize 支持最大个数
    #q.get()执行完成后,执行q.task_done()告诉队列取值完成
    #join,task_done ,阻塞进程,当队列中任务执行完毕之后,不再阻塞
    #q = queue.Queue(2)  #可以加参数,表示队列最大个数
    #q.put(33,timeout=2)  #阻塞2秒,如果2s后还是无法插入队列,然后直接报错
    #q.put(33,block=False)   #block=False 表示不阻塞,如果不能插入队列,然后直接报错

    out:

     2
    11
    22

    2.后进先出

    import queue
    q = queue.LifoQueue()
    q.put(123)
    q.put(456)
    print(q.get())

    out:

    456
    123

    3.优先级队列

    数字越小,优先级越高

    import queue
    q = queue.PriorityQueue()
    q.put((0,"test1"))
    q.put((3,"test3"))
    q.put((4,"test4"))
    print(q.get())
    print(q.get())
    print(q.get())

    out:

    (0, 'test1')
    (3, 'test3')
    (4, 'test4')

    数字越小,优先级越高

    4.双向队列

    import queue
    q = queue.deque()
    q.append(123)
    q.append(444)
    q.appendleft(555)
    print(q.pop())
    print(q.pop())
    print(q.popleft())

    out:

    444
    123
    555

  • 相关阅读:
    像调试java一样来调试Redis lua
    微言限流
    性能测试遭遇TPS抖动问题
    你所不知道的堆外缓存
    基于JMH的Benchmark解决方案
    基于FastJson的通用泛型解决方案
    你所不知道的日志异步落库
    mac上配置java开发环境
    你所不知道的库存超限做法
    服务器一般达到多少qps比较好[转]
  • 原文地址:https://www.cnblogs.com/pangguoping/p/5678500.html
Copyright © 2011-2022 走看看