Python2.7-Queue

Queue 模块,python3中为queue,一般和threading模块同时使用,用于处理多任务队列,模块定义了3种队列类,先进先出(FIFO),后进先出(LIFO),优先级队列

Queue.Queue(maxsize=0),Queue.LifoQueue(maxsize=0),Queue.PriorityQueue(maxsize=0):创建3种不同的队列类,maxsize设置队列任务上限,小于等于0则上限为无穷

模块还定义了两个异常,exception Queue.Empty,exception Queue.Full:分别在调用不延迟(non-blocking)的 get() 或 put() 时,队列是空的或满的情况下抛出

对象方法:

qsize():返回队列的大致大小,不保证随后调用put()或get()不会阻塞
empty():返回队列是否为空,不保证随后调用put()或get()不会阻塞
full():返回队列是否已满,不保证随后调用put()或get()不会阻塞
put(item[, block[, timeout]]):把任务放进队列中,block 为 True,timeout 为 None(默认)时,会阻塞一直到队列中有空位为止,如果设置了timeout,在时间到了队列还没空位时,就会抛出 Full 异常。block 为 False 时,会立即尝试加入队列,如果没空位就抛出异常,此时timeout参数会被忽略
put_nowait(item):等同于 put(item, False)
get([block[, timeout]]):从队列中取出并返回这个任务,block 和 timeout 同 put 方法
get_nowait():等同于 get(False)
task_done():指示 get() 得到的任务是否已经完成,用于队列消费者(queue consumer)线程
join():阻塞主线程一直到队列中所有任务被完成,即每个 get() 的消费者都运行到了 task_done()

上一篇:C#语法——消息,MVVM的核心技术。


下一篇:Android开源框架源码分析:Okhttp