Queue 队列模块-Python成为专业人士笔记

“专业人士笔记”系列目录:

创帆云:Python成为专业人士笔记--强烈建议收藏!每日持续更新!​

介绍

队列模块能实现多生产者、多消费者的队列,当信息必须在多个线程之间安全地交换时,它特别有用。

队列模块提供了三种类型的队列,具体如下:

1、普通队列 (先进先出)

2 LifoQueue (后进先出)

3 PriorityQueue ( 优先级队列, 即根据排序规则决定谁在队头,谁在队尾 )

下面来一个简单的例子:

普通队列:

import queue

question_queue = queue.Queue()

#往队列丢数据
for x in range(1, 10):
    temp_dict = ('key', x)
    question_queue.put(temp_dict)


#判断队列不为空时,从队列取数据
while (not question_queue.empty()):
    item = question_queue.get()
    print(str(item))

#从结果可以看到,先丢进去的数据,get的时候也会先弹出来,这就是普通队列实现
#('key', 1)
 ('key', 2)
 ('key', 3)
 ('key', 4)
 ('key', 5)
 ('key', 6)
 ('key', 7)
 ('key', 8)
 ('key', 9)

lifo后进先出队列

import queue

question_queue = queue.LifoQueue()

#往队列丢数据
for x in range(1, 10):
    temp_dict = ('key', x)
    question_queue.put(temp_dict)


#判断队列不为空时,从队列取数据
while (not question_queue.empty()):
    item = question_queue.get()
    print(str(item))

#输出:类似于堆栈,先丢进去的,最后弹出来
 ('key', 9)
 ('key', 8)
 ('key', 7)
 ('key', 6)
 ('key', 5)
 ('key', 4)
 ('key', 3)
 ('key', 2)
 ('key', 1)

优先级队列

import queue

question_queue = queue.PriorityQueue();

#往队列丢数据
for x in range(1, 10):
    temp_dict = (x,'test')  #注意,这里和前面不一样,是以x作为优先级的;x值越小,则弹出时越优先

    question_queue.put(temp_dict)


#判断队列不为空时,从队列取数据
while (not question_queue.empty()):
    item = question_queue.get()
    print(str(item))

#输出:
 (1, 'test')
 (2, 'test')
 (3, 'test')
 (4, 'test')
 (5, 'test')
 (6, 'test')
 (7, 'test')
 (8, 'test')
 (9, 'test')

以上代码均已在python3云环境中调试成功,有问题留言,请不要转载,谢谢

猜你喜欢

转载自blog.csdn.net/oSuiYing12/article/details/106495389