queue -- 队列是一种特殊的线性表,是一种先进先出(FIFO)的数据结构。它只允许在表的前端(front)进行删除操作,而在表的后端(rear)进行插入操作。进行插入操作的端称为队尾,进行删除操作的端称为队头。队列中没有元素时,称为空队列
而我们使用python中的queue模块, 可以队列和线程之间来传递数据, 我们实现多线程可以将整个程序进行拆分, 将每一个步骤封装成一个函数, 函数之间通过队列来进行交互.
# 导入模块的三种类
1. from queue import Queue(maxsize)
2. from queue import Lifoqueue(maxsize)
3. from queue import Priorityqueue(maxsize)
maxsize参数: maxsize小于1就表示队列长度无限
1). 队列先进先出
2). 类似于堆, 先进后出
3). 通过优先级队列,级别低先出来
常用的方法:
例子:
q = queue.Queue()
q.qsize() 返回队列的大小
q.empty() 如果队列为空,返回True,反之False
q.full() 如果队列满了,返回True,反之False
q.get(), block可选参数默认为True, 当队列为空和block为True的时候停止调用, 直到队列不为空, 同时它会返回数据
q.put(item), item为必传参数, 通过参数放入到队列中, block默认为1,
q.task_done()每完成一个队列任务的时候, 结束时要说明一下.也就执行get和put后
q.join(), 等待队列为空, 否则一直阻塞