queue,队列是线程间最常用的交换数据的形式,当信息必须在多个线程之间安全交换的时候,队列在线程编程是特别有用的。
1.创建一个队列
import queue
q = queue.Queue(maxsize=5) #队列最多3个,先入先出
q = queue.LifoQueue(maxsize=3) #先入后出
q = queue.PriorityQueue(maxsize=0) #存储数据时可设置优先级的队列
通过Queue的构造函数的可选参数maxsize来设定队列长度。如果maxsize小于1就表示队列长度无限
2.常用操作
q.put(1) #向队列中放值
q.get() #从队列中取值
q.qsize() 返回队列的大小
q.empty() 如果队列为空,返回True,反之False
q.full() 如果队列满了,返回True,反之False
q.get([block[, timeout]]) 获取队列,timeout等待时间
q.get_nowait() 相当q.get(False)
q.put_nowait(item) 相当q.put(item, False)
q.task_done() 在完成一项工作之后,q.task_done() 函数向任务已经完成的队列发送一个信号
q.join() 实际上意味着等到队列为空,再执行别的操作
生产者消费者模型
1 import threading,queue 2 import time 3 4 def consumer(n): 5 while True: 6 print("