python( queue队列 )

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

class  queue.Queuemaxsize = 0 )#先入先出
class  queue.LifoQueuemaxsize = 0 )#last in fisrt out  #后让后出
class  queue.PriorityQueuemaxsize = 0 )#存储数据时可设置优先级的队列
优先队列的构造函数。 maxsize  是一个整数,用于设置可放入队列的项目数的上限。一旦达到此大小,插入将会阻塞,直到队列项被消耗。如果  maxsize  小于或等于零,队列大小是无限的。

首先检索最低值的条目(最低值条目是返回的条目  sorted(list(entries))[0])。对于条目的典型图案的形式是一个元组:  。(priority_number, data)

例外 queue.Empty
在 空对象上调用非阻塞get() (或  get_nowait())  时引发异常  Queue
例外 queue.Full
如果在 已满的对象上调用非阻塞put() (或  put_nowait()),则会  引发异常  Queue
Queue.qsize()
Queue.empty()#return如果为空则返回true  
Queue.full()#如果已满,则返回True 
Queue.putitem,  block = True,  timeout = None 
将  项目  放入队列中。如果可选参数    为真,并且  超时时间  为无(默认),则在需要时禁止,直到空闲插槽可用。如果  超时  是一个正数,则最多会阻塞  超时  秒数,Full 如果在此时间内没有空闲插槽,则会引发  异常。否则(block  为false),如果一个空闲插槽立即可用,则在队列中放置一个项目,否则引发  Full 异常( 在这种情况下超时被忽略)。
Queue.put_nowait项目
相当于  。put(item, False)
Queue.getblock = True,  timeout = None 
从队列中移除并返回一个项目。如果可选的参数    为真,并且  超时时间  为无(默认值),则在必要时阻塞,直到项目可用。如果  超时  是一个正数,则最多会阻塞  超时  秒数,Empty 如果在该时间内没有可用项目,则会引发  异常。否则(block  为false),返回一个项目,如果一个是立即可用的,否则引发  Empty 异常( 在这种情况下超时被忽略)。
Queue.get_nowait()
相当于  get(False)

提供了两种方法来支持跟踪入队任务是否已完全由守护进程消费者线程处理。

Queue.task_done()
表明以前排队的任务已经完成。由队列消费者线程使用。对于每个  get() 用于获取任务的对象,随后的调用都会  task_done() 告诉队列,任务的处理已完成。

如果a  join() 当前被阻塞,则在处理所有项目时(意味着task_done() 已经接收到已经put() 进入队列的每个项目的呼叫)  ,则将恢复  。

提出了一个  ValueError 好象叫更多的时间比中放入队列中的项目。

Queue.join()block直到队被消费完毕

发表评论