zoukankan      html  css  js  c++  java
  • python专题queue队列

    一 前言

    本篇内容关于python队列的一些小知识,读者们抽空就看看吧!

    公众号:知识追寻者

    知识追寻者(Inheriting the spirit of open source, Spreading technology knowledge;)

    二 队列介绍

    队列的常用方法

    1. put(item, block=True, timeout=None)存值;如果设置 block = True, timeout=None(默认) ,等待获取空闲的插槽入值;block =False ,立即获取插槽,否则抛出Full异常;如果timeout设置值,如果没有在规定时间内没有获取空闲的插槽抛出Full异常
    2. get(block=True, timeout=None)取值;如果设置 block = True, timeout=None默认,等待获取值;如果设置block =False,立即获取值,如果未拿到值抛出 Empty异常;如果timeout设置值,在规定时间内未获取到值抛出Empty异常;
    3. empty()判断队列是否为空,返回布尔值;
    4. qsize()返回队列中元素个数
    5. join()等到队列为空,该行语句下面的语句才会执行
    6. full()检查队列是否已满,返回布尔值;
    7. put_nowait(item); 等同于 put(item, False).
    8. get_nowait(); 等同于 get(False) 。

    2.1 Queue(maxsize)

    Queue(maxsize);先进先出队列 First In First Out(FIFO),类比管道,乒乓球从一端进去,从一端出来,先进去球的先出来;maxsize 为队列最大值,当数量超过maxsize值时队列进入阻塞状态;

    import queue
    
    que = queue.Queue(3)
    # 入队
    for num in range(3):
        que.put(num)
    # 出队
    for num in range(3):
        print(que.get())
    

    输出

    0
    1
    2
    

    2.2 LifoQueue(Queue)

    LifoQueue(Queue) ; 先进后出队列(FILO);类比叠盘子,先放的叠子位于底层,后放的叠子位于顶层,取叠子的时候自然先从顶层获取;

    que = queue.LifoQueue(3)
    # 入队
    for num in range(3):
        que.put(num)
    # 出队
    for num in range(3):
        print(que.get())
    

    输出

    2
    1
    0
    

    2.3 PriorityQueue(Queue)

    PriorityQueue(Queue);put进去的是一个元祖,(优先级,数据) ,数字越小,优先级越高,优先级越高,先出队列;

    que = queue.PriorityQueue(3)
    # 入队
    que.put((2,'z'))
    que.put((6,'x'))
    que.put((5,'q'))
    # 出队
    for num in range(3):
        print(que.get())
    

    输出

    (2, 'z')
    (5, 'q')
    (6, 'x')
    

    2.4 SimpleQueue

    SimpleQueue() 简单队列(FIFO); 没有大小限制,没有队列的一些高级功能;

    que = queue.SimpleQueue()
    # 入队
    for num in range(3):
        que.put(num)
    # 出队
    for num in range(3):
        print(que.get())
    

    输出

    0
    1
    2
    

    三 官方文档

    https://docs.python.org/3/library/queue.html

  • 相关阅读:
    表格排序插件datatables
    dropzone手动上传
    上传文件插件dropzone的实例
    table加载慢
    利用touchslide实现tab滑动切换
    Qt之事件处理机制
    Qt容器组件(二)之QWidgetStack、QMdiArea、QDockWidget
    ActiveMQ之ActiveMQ-CPP安装及测试
    Qt容器组件(一)之QGroupBox、QScrollArea、QToolBox、QTabWidget
    Qt属性系统(Qt Property System)
  • 原文地址:https://www.cnblogs.com/zszxz/p/12842871.html
Copyright © 2011-2022 走看看