python队列queue使用

x33g5p2x  于2021-08-23 转载在 Java  
字(1.3k)|赞(0)|评价(0)|浏览(442)

一 前言

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

二 队列介绍

队列的常用方法

  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

相关文章

微信公众号

最新文章

更多