大聊Python----quene队列

当必须在多个线程之间安全地交换信息时,队列在线程编程中特别有用。

class queue.Queue(maxsize=0)  # 先入先出
class queue.LifoQueue(maxsize=0)  # 后进先出
class queue.PriorityQueue(maxsize=0)  # 存储数据时可设置优先级的队列

优先级队列的构造函数。 maxsize是一个整数,用于设置可以放入队列数目的上限。 达到此大小后,插入将阻止,直到消耗队列项。 如果maxsize小于或等于零,则队列大小为无限大

首先检索最低值的条目(最低值条目是由sorted(list(entries))[0]返回的条目。 条目的典型模式是以下形式的元组:(priority_number,data)。

exception queue.Empty    #在空的Queue对象上调用非阻塞get()(或get_nowait())时引发的异常。
exception queue.Full     #在已满的Queue对象上调用非阻塞put()(或put_nowait())时引发异常。
Queue.qsize()
Queue.empty()    #return如果为空则为真
Queue.full()     #如果已满,则返回True
Queue.put(项目,块=真,超时=无)

将项目放入队列。 如果可选的args块为true且timeout为None(默认值),则在必要时阻塞,直到有空闲插槽可用。 如果timeout是一个正数,则它会阻止最多超时秒,如果在该时间内没有可用的空闲槽,则会引发Full异常。 否则(块为假),如果空闲插槽立即可用,则将项目放在队列中,否则引发完全异常(在这种情况下忽略超时)。

Queue.put_nowait(item)  #相当于 put(item,False)。
Queue.get(块=真,超时=无)

从队列中删除并返回一个项目。 如果可选的args块为true且timeout为None(默认值),则在必要时阻止,直到某个项可用为止。 如果timeout是一个正数,则它会阻止最多超时秒,如果在该时间内没有可用的项,则会引发Empty异常。 否则(块为假),如果一个项立即可用,则返回一个项,否则引发Empty异常(在这种情况下忽略超时)。

Queue.get_nowait() #相当于get(False)。

提供了两种方法来跟踪队列任务是否被守护进程使用者线程完全处理。

Queue.task_done()

指示先前进入队列的任务已经完成。用于队列使用者线程。对于用于获取任务的每个get(),对task_done()的后续调用告诉队列,任务的处理是完整的。

如果join()当前正在阻塞,则它将在所有项目都已处理后恢复(这意味着已为每个已放入队列的项目收到task_done()调用)。

如果调用的次数超过队列中放置的项目,则引发ValueError。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

posted @ 2018-07-10 14:08  追风的小蚂蚁  阅读(470)  评论(0编辑  收藏  举报