一、队列的基本操作
队列其实是一种数据结构,或者更本质的说队列其实就是对基本数据结构的封装,我们也可以封装自己的数据结构。队列做大的特点是先进先出FIFO(first in first out),下面我们就看看python中队列的基本操作。
队列的基本操作如下:
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 import queue 2 3 # queue_01 = queue.Queue() #申明一个很大的队列 4 queue_01 = queue.Queue(2) #申明一个长度为3的队列 5 queue_01.put(1) #往队列中扔了一个数据 6 queue_01.put(2)#又往队列中扔了一个数据 7 queue_01.full() #判断队列是否满了 8 # queue_01.put(3)#又往队列中扔了一个数据,如果队列满 则阻塞 9 # queue_01.put(1,block=True)#如果队列满了,不阻塞 10 # queue_01.put(1,timeout=2)#设置队列阻塞时间为1s 11 queue_01.get()#从队列中取了一个数据 12 queue_01.empty() #判断队列是否为空 13 queue_01.get() #又从队列中取了一个数据 14 # queue_01.get(block=True) #又从队列中取了一个元素,如果没有就阻塞 15 # queue_01.get(block=False)#再从队列中取出一个数据,且不要阻塞,直接抛出异常 16 #queue_01.get(timeout=1)#又从队列中取了一个元素,超时时间为1s 17 18 #以下为特殊的队列 19 q = queue.LifoQueue() #先进后出 --栈 20 q2 = queue.PriorityQueue()#按照优先级取的队列 21 q2.put((2,"hello")) 22 q2.put((1,"python")) 23 print(q2.get(),q2.get())
二、实例演示,生产者消费者模式
实例代码如下:
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 import time,threading,queue 2 3 MAX_SIZE = 2 4 CUR_SIZE = 0 5 q = queue.Queue() 6 7 def producer(name): 8 global MAX_SIZE,CUR_SIZE 9 while True: 10 time.sleep(0.5) 11 q.put(CUR_SIZE) 12 print("