python

消息队列分类

1.先进先出

2.后进先出

3.优先级队列

4.双向队列

1.先进先出

import queue
q = queue.Queue(2) #队列最大长度
q.put(11)
q.put(22)
print(q.qsize())  #获取队列的个数
print(q.get())
print(q.get())
#先进先出队列
#put放数据,block是否阻塞,timeout = 阻塞时的超时时间
#get 取数据,默认阻塞。block是否阻塞,timeout阻塞时的超时时间
#队列最大长度
#qsize()真实个数
#maxsize 支持最大个数
#q.get()执行完成后,执行q.task_done()告诉队列取值完成
#join,task_done ,阻塞进程,当队列中任务执行完毕之后,不再阻塞
#q = queue.Queue(2)  #可以加参数,表示队列最大个数
#q.put(33,timeout=2)  #阻塞2秒,如果2s后还是无法插入队列,然后直接报错
#q.put(33,block=False)   #block=False 表示不阻塞,如果不能插入队列,然后直接报错

out:

 2
11
22

2.后进先出

import queue
q = queue.LifoQueue()
q.put(123)
q.put(456)
print(q.get())

out:

456
123

3.优先级队列

数字越小,优先级越高

import queue
q = queue.PriorityQueue()
q.put((0,"test1"))
q.put((3,"test3"))
q.put((4,"test4"))
print(q.get())
print(q.get())
print(q.get())

out:

(0, 'test1')
(3, 'test3')
(4, 'test4')

数字越小,优先级越高

4.双向队列

import queue
q = queue.deque()
q.append(123)
q.append(444)
q.appendleft(555)
print(q.pop())
print(q.pop())
print(q.popleft())

out:

444
123
555

原文地址:https://www.cnblogs.com/pangguoping/p/5678500.html