您现在的位置是:网站首页 > 博客日记 >

python队列

作者:YXN-python 阅读量:42 发布日期:2024-05-20

在Python中,队列是使用queue模块实现的。

这个模块提供了三种队列:

  1. 先进先出(FIFO)队列:queue.Queue
  2. 后进先出(LIFO)队列:queue.LifoQueue
  3. 优先级队列(级别越低越先出):queue.PriorityQueue

基本示例

import queue

# 创建一个先进先出,最大长度为10的队列
q = queue.Queue(maxsize=10)

# 入队操作
q.put('A')
q.put('B')
q.put('C')

# 出队操作
print(q.get())  # 输出: 'A'
print(q.get())  # 输出: 'B'
print(q.get())  # 输出: 'C'
print(q.get())  # 阻塞

如上:如果队列为空,get方法将阻塞(阻塞调用指的是在执行操作 now 的时候,该操作需要等待某个条件满足才能继续执行,比如等待I/O操作完成),直到有项目可以获取。

队列常用方法

q.qsize() 返回队列的大小

q.empty() 如果队列为空,返回True,反之False

q.full() 如果队列满了,返回True,反之False

q.full 与 maxsize 大小对应

q.get([block[, timeout]]) 获取队列,timeout等待时间

q.get_nowait() 相当q.get(False)

非阻塞 q.put(item) 写入队列,timeout等待时间

q.put_nowait(item) 相当q.put(item, False)

q.task_done() 在完成一项工作之后,q.task_done() 函数向任务已经完成的队列发送一个信号

q.join() 实际上意味着等到队列为空,再执行别的操作

队列的应用

参考:

python多线程应用—threading

python中队列和生成器的结合应用

 

YXN-python

2024-05-20