1 基本理解
Queue是一个在内存中,元素带顺序的容器。
解耦:数据待处理线程把数据交给队列,不需要关心处理者是谁。处理者从队列中拿数据处理,不和待处理线程接触。
效率:数据待处理线程把数据交给队列,然后继续自己的工作。处理者可以多线程并发处理。
和列表的区别:队列中的数据取出就会消失。列表不会。
2 Queue()
class queue.Queue() 创建先入先出的实例
import queue q = queue.Queue() q.put('d1') q.put('d2') print(q.qsize()) q.get() q.get() q.get(block=True,timeout=4) >> 2 raise Empty queue.Empty #创建队列实例,put两个数据,获取列队长度,get数据。 #get方法默认阻塞,超时为None,qsize为0时持续阻塞。 #get不到数据,超时后,抛出一个队列空的异常
import queue q = queue.Queue(maxsize=5) q.put('d1',timeout=4) q.put('d1',timeout=4) q.put('d1',timeout=4) q.put('d1',timeout=4) q.put('d1',timeout=4) q.put('d1',timeout=4) >> raise Full queue.Full #创建队列实例时设定了size,然后put方法中设定了timeout,size满了,put超时,就抛出队列满的异常
3 class queue.LifoQueue
last in first out
import queue q = queue.LifoQueue() q.put('d1') q.put('d2') print(q.qsize()) print(q.get()) print(q.get()) >> 2 d2 d1