“专业人士笔记”系列目录:
创帆云: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云环境中调试成功,有问题留言,请不要转载,谢谢