Python queue结构官方文档解读

2019-05-15  本文已影响0人  拜仁的月饼

队列:是线性表的一种。使用队列存取数据元素时,数据元素只能从表的一端进入队列,另一端出队列。幸运的是,在Python标准库中,有一个标准库queue可以实现以上数据结构。

简介

queue(队列)是Python的一个标准库,其用法在official documentation中有详细介绍。现总结如下:

首先,queue适用于多线程编程,处理多线程能力极佳。

Python中的queue包括三种:

实现方法如下:

  1. FIFO queue

queue.Queue(maxsize = 0)

即标准队列。其中有一个可选参数:maxize,可以设置入队元素最多有几个(maxsize个)。如果maxsize <= 0或者不填,那么maxsize即无穷(infinite)。

  1. LIFO queue :

queue.LifoQueue(maxsize = 0)

即“后进先出”队列。参数同上。同样的,如果maxsize <= 0,那么maxsize无穷。

  1. priority queue

queue.PriorityQueue(maxsize = 0)

可以创建一个优先级队列,省得排序了。

  1. 在Python 3.7.+ 版本中又引入了一个新的结构:SimpleQueue
queue.SimpleQueue()

构造一个maxsize = 0的FIFO队列。只有Python 3.7以上版本支持。

操作方法

  1. Queue.qsize()
    返回队列的实际大小。

  2. Queue.empty()
    如果队列是空的,则返回True,否则返回False。

  3. Queue.full()
    如果队列是满载的,则返回True,否则返回False。

  4. Queue.put_nowait(item)
    将元素放到队列中。等同于Queue.put(item,False)

  5. Queue.get_nowait()
    将元素移出队列并返回,等于Queue.get(False)

以下方法运用于多线程编程中:

  1. Queue.put(item, block = True, timeout = None)
    将元素放到队列中。运用于线程编程中

  2. Queue.get(block = True, timeout = None)
    将元素移出队列,运用于线程编程中。

  3. Queue.task_done()
    表示待入队的任务已经完成,运用于线程编程中。

  4. Queue.join()
    暂不太懂,待更新。

在Simple_Queue中,除了task_done()和join()两个方法,其他的都支持。

上一篇 下一篇

猜你喜欢

热点阅读