1.Python的队列类型
from queue import Queue, LifiQueue, PriorityQueue, SimpleQueue
- FIFO(先入先出)Queue(maxsize=0)
FIFO队列的构造函数。maxsize是一个整数,用于设置放入队列中数据的上限。一旦达到此大小,插入将被阻塞。如果maxsize<=0,则队列大小为无限。 - LIFO(后进先出)LifoQueue(maxsize=0)
LIFO队列的构造函数,其它同上。 - 优先级队列 PriorityQueue(maxsize=0)
优先级队列的构造函数,其它同上。 - SimpleQueue
FIFO队列的简单形式,缺少诸如任务跟踪之类的高级功能。 - Empty
在空对象上调用get()方法,引发的异常队列。 - Full
在已满的对象上调用put()方法,引发的异常队列。
2.队列对象(适用Queue、LifoQueue和PriorityQueue)
-
qsize()
返回队列的大小。
注意qsize()>0不能保证后续的get()不会阻塞,qsize()<maxsize也不能保证对get()的后续调用不会阻塞。 -
empty()
如果队列是空的返回True,否则返回False。
如果返回True不能保证后续对put()的调用都不会阻塞。如果返回False也不能保证对get()的后续调用不会阻塞。 -
full()
如果队列满了返回True,否则返回False。
如果返回True不能保证对get()的后续调用不会阻塞。如果full返回False也不能保证后续对put()的调用不会阻塞。 -
put(item, block=True, timeout=None)
将数据插入队列中。
如果block=True, timeout=None则在必要时进行阻塞,直到队列有空间为止。如果timeout=正数,则它最多超时正数秒。Full队列如果在该时间内没有空间可用,会引发异常。如果block=False,队列有空间,则将数据放入队列(超时被忽略),否则引发Full异常。 -
put_nowait(item)
等同于put(item, False)。 -
get(block=True, timeout=None)
从队列中删除并返回一个数据。
如果block=True, timeout=None则在必要时进行阻塞,直到队列有数据为止。如果timeout=正数,则它最多超时正数秒。Empty队列如果在该时间内没有数据可用,会引发异常。如果block=False,队列有数据,则会返回一个数据(超时被忽略),否则引发Empty异常。 -
get_nowait()
等同于get(False)。 -
task_done()
表示先前排队的任务已完成。 -
join()
阻塞直到队列中的所有数据都已获得处理。每当将项目添加到队列时,未完成任务的数量就会增加。每当使用者线程调用task_done()以指示已检索到该项目并且该项目的所有工作完成时,该计数就会减少。当未完成的任务数降至零时,join()取消阻止。
3.SimpleQueue对象
- qsize()
- empty()
- put(item, block = True, timeout = None )
- put_nowait(item)
- get(block = True,timeout = None)
- get_nowait(item)