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

  • 相关阅读:
    UVa 1592 Database(巧用map)
    TZOJ 4746 Xiangqi(模拟棋盘数组)
    TZOJ 1545 Hurdles of 110m(01背包dp)
    TZOJ 2754 Watering Hole(最小生成树Kruskal)
    TZOJ 1242 求出前m大的数(预处理)
    TZOJ 5280 搜索引擎(模拟字符串)
    TZOJ 4865 统计单词数(模拟字符串)
    TZOJ 5279 马拉松比赛(广搜)
    [luogu4735]最大异或和
    小奇回地球
  • 原文地址:https://www.cnblogs.com/pangguoping/p/5678500.html
Copyright © 2011-2022 走看看