python队列
作者:YXN-python 阅读量:51 发布日期:2024-05-20
在Python中,队列是使用queue模块实现的。
这个模块提供了三种队列:
- 先进先出(FIFO)队列:queue.Queue
- 后进先出(LIFO)队列:queue.LifoQueue
- 优先级队列(级别越低越先出):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() 实际上意味着等到队列为空,再执行别的操作
队列的应用
参考:
YXN-python
2024-05-20