Python 队列
一、队列的概念及特点
队列(Queue)是计算机科学中一种常见的数据结构,它可以用来存储按照先进先出(First In First Out, FIFO)顺序排列的数据元素。在队列中,新元素在队尾添加,而从队列中移除元素的操作则在队头进行。队列是一种限制端操作的线性表,即只能在表的一端进行插入元素(队尾),而在另一端进行删除元素(队头)。在实际应用中,队列类似于日常生活中排队等候服务的场景,先到的人先接受服务,后来的人需要等待。
Python 提供了内置的 queue
模块,其中包含了多种队列的实现类,包括 Queue
、PriorityQueue
和 LifoQueue
。下面将详细介绍这些队列类的特点及使用方法。
二、Queue 类
Queue
类是 queue
模块中提供的最简单的队列实现。它基于先进先出的原则,在队尾添加元素,在队头删除元素。下面是 Queue
类的基本使用方法:
- 创建一个空的队列:
- 向队列中添加元素:
- 从队列中取出元素:
- 判断队列是否为空:
Queue
类的常用方法如下:
put(item[, block[, timeout]])
: 将item
放入队列中,block
参数用于设置是否阻塞,timeout
参数用于设置超时时长。get([block[, timeout]])
: 从队列中取出元素,block
参数和timeout
参数的含义与put()
方法相同。qsize()
: 返回队列中元素的个数。empty()
: 如果队列为空返回True
,否则返回False
。full()
: 如果队列已满返回True
,否则返回False
。
下面是一个完整的示例程序:
运行结果如下:
三、PriorityQueue 类
PriorityQueue
类继承自 Queue
类,它支持优先级的概念,即每个元素都有一个优先级,优先级高的元素先被取出。这在一些需要按照优先级处理任务的场景中非常有用。下面是 PriorityQueue
类的基本使用方法:
- 创建一个空的优先级队列:
- 向队列中添加元素:
- 从队列中取出元素:
与 Queue
类相比,PriorityQueue
类的 put()
方法需要传入一个元组,元组的第一个元素为优先级,第二个元素为实际值。优先级高的元素先被取出。
四、LifoQueue 类
LifoQueue
类继承自 Queue
类,表示后进先出(Last In First Out, LIFO)的队列,也称为栈(Stack)。LifoQueue
类的基本使用方法与 Queue
类类似,只是取出元素时采用了后进先出的顺序。下面是 LifoQueue
类的基本使用方法:
- 创建一个空的栈:
- 向栈中添加元素:
- 从栈中取出元素:
LifoQueue
类的使用方法与 Queue
类类似,只是在取出元素时采用了后进先出的顺序。
五、总结
队列是一种常见的数据结构,在实际编程中有着广泛的应用。Python 提供了内置的 queue
模块,其中包含了多种队列实现的类,包括 Queue
、PriorityQueue
和 LifoQueue
。通过使用这些队列类,可以方便地实现先进先出、优先级队列和后进先出的功能。