Python的Queue模块中提供了同步的、线程安全的队列类,包括:FIFO(先入先出)队列Queue
LIFO(后入先出)队列LifoQueue,优先级队列PriorityQueue,这些队列都实现了锁原语,能够
在多线程中直接使用。可以使用队列来实现线程间的同步。
初始化Queue()对象时(例如:q=Queue()),若括号中没有指定最大可接收的消息数量,或数量
为负值,那么就代表可接受的消息数量没有上限
Queue.qsize():返回当前队列包含的消息数量;
Queue.empty() 如果队列为空,返回True,反之False
Queue.full() 如果队列满了,返回True,反之False
Queue.get()获取队列,timeout等待时间
# 如果block表示是否等待,如果timeout表示是否等待,
get(self, block=True, timeout=None)
Queue.put(item) 写入队列
# 如果block表示是否等待,如果timeout表示是否等待,
put(self, item, block=True, timeout=None)
Queue.get_nowait() 相当Queue.get(False)
Queue.put_nowait(item) 相当Queue.put(item, False)
Queue.task_done() 在完成一项工作之后,使用Queue.task_done()方法可以向队列发送一
个信号,表示该任务执行完毕
Queue.join() 实际上意味着等到队列中所有的任务(数据)执行完毕之后,再往下,否则一直
等待
注意点:join()是判断的依据,不单单指的是队列中没有数据,数据get出去之后,要使
用task_done()向队列发送一个信号,表示该任务执行(数据使用)完毕
1、FIFO(先入先出)队列Queue
from queue import Queue #LILO队列
2、LIFO(后入先出)队列LifoQueue
from queue import LifoQueue #LIFO队列
3、优先级队列PriorityQueue
from queue import PriorityQueue #优先队列
# 队列中的元素为元祖类型:(优先级,数据)
# 优先级越小,越先出来
1、基本使用
from queue import Queue, LifoQueue, PriorityQueue
# 实例化一个队列对象
que = Queue(2)
# ----------往队列中添加数据------------------
que.put