python功能简介_Python queue模块功能介绍

queue模块是Python内置的标准模块,可以直接通过import

queue引用。在Queue模块中提供了三种同步的、线程安全的队列,分别由三个类Queue,LifoQueue和PriorityQueue表示,它们的唯一区别是元素取出的顺序不同。并且LifoQueue和PriorityQueue都是Queue的子类。

1. Queue(FIFO队列)

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

2. LifoQueue(LIFO队列)

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

3. PriorityQueue(优先级队列)

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:当向一个满队列中存数据时,可抛出此异常。

猜你喜欢:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值