这篇文章主要介绍“Python queue模块有哪些功能”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Python queue模块有哪些功能”文章能帮助大家解决问题。
queue模块是Python内置的标准模块,模块实现了三种类型的队列,它们的区别仅仅是条目取回的顺序,分别由3个类进行表示,Queue,LifoQueue,PriorityQueue
queue模块是Python内置的标准模块,可以直接通过import queue引用。在Queue模块中提供了三种同步的、线程安全的队列,分别由三个类Queue,LifoQueue和PriorityQueue表示,它们的唯一区别是元素取出的顺序不同。并且LifoQueue和PriorityQueue都是Queue的子类。
Queue类表示一个基本的FIFO(First In First Out)队列,即先进先出。创建方法是Queue.Queue(maxsize=0),其中maxsize是个整数,指明了队列中能存放的数据个数的上限。以下是一个使用Queue的示例。
from queue import Queue queue_object = Queue() for i in range(4): queue_object.put(i) while not queue_object.empty(): print(queue_object.get())
上例中将4个数字放在了Queue队列中,然后依次取出它的元素值。它的运行结果如下:
0
1
2
3
LifoQueue类表示后进先出队列(Last in First Out),与栈类似,都是后进入的元素先出来。创建方法也很简单,使用Queue.LifoQueue(maxsize=0)即可,其中maxsize的含义与Queue类相同。以下是一个使用LifoQueue的示例:
from queue import LifoQueue lifo_queue = LifoQueue() for i in range(4): lifo_queue.put(i) while not lifo_queue.empty(): print(lifo_queue.get())
上例同样将4个数字放在了LifoQueue中,但取出元素的顺序与Queue相反,最后放入的元素最先被取出。运行结果如下:
3
2
1
0
PriorityQueue类表示优先级队列,按级别顺序取出元素,级别最低的最先取出。优先级队列中的元素一般采取元组(优先级别,数据)的形式来存储。创建方法同样是Queue.PriorityQueue(maxsize=0)。以下是一个使用PriorityQueue的示例:
from queue import PriorityQueue class Job(object): def __init__(self, level, description): self.level = level self.description = description return def __lt__(self, other): return self.level < other.level priority_queue = PriorityQueue() priority_queue.put(Job(5, '中级别工作')) priority_queue.put(Job(10, '低级别工作')) priority_queue.put(Job(1, '重要工作')) while not priority_queue.empty(): next_job = priority_queue.get() print('开始工作:', next_job.description)
在上例中,将任务Job存入PriorityQueue中,每个Job都有一个优先级level,level值越低则代表的优先级越高。在调用get方法时,按照优先级从高到低的顺序从队列中取出元素。
它的运行结果如下:
开始进行: 重要工作
开始进行: 中级别工作
开始进行: 低级别工作
除此之外,在Queue模块中还定义了2个异常类,如下所示:
Empty:当从空队列中取数据时,可抛出此异常。
Full:当向一个满队列中存数据时,可抛出此异常。
关于“Python queue模块有哪些功能”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识,可以关注亿速云行业资讯频道,小编每天都会为大家更新不同的知识点。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。