Python3并行编程之queue模块

文章目录

  • 导入模块
  • 三种类型的队列
  • queue模块中的三个类
  • Queue实例化对象的方法

导入模块

import queue

导入模块中无第三方模块

注: queue是Python的标准库。该库在Python2中名为Queue,在Python3中名为queue。

三种类型的队列

queue模块实现了三种类型的队列,它们的区别仅仅是数据取回的顺序。在 FIFO 队列中,先添加的数据先取回。在 LIFO 队列中,后添加的数据后取出。在优先级队列中,提取每次传入队列中的数据的第一个值,不管该值是数字,字母还是汉字都将以unicode编码值进行优先级排序,值越小优先级越高,提取时将优先选择该数据。
不管是何种队列,在提取一个值之后,该值都将在队列中抹除。

queue模块中的三个类

#	创建FIFO队列对象。
queue_object = queue.FifoQueue()
#	创建LIFO队列对象。
queue_object = queue.LifoQueue()
#	创建优先级队列对象。
queue_object = queue.PriorityQueue()

这三个类都只有一个maxsize参数,用来设置队列的长度。

Queue类实例化对象的方法

方法 描述
put(item,block=True,'timeout=None) 当block为True时,将在必要时发生阻塞直至队列可用。若timeout为正数,最多阻塞timeout秒,阻塞结束后将引发 Full 异常;当block为False时,timeout会被忽略并在队列不可用时引发 Full 异常。
get(item,block=True,timeout=None) 当block为True时,将在必要时发生阻塞直至队列可用。若timeout为正数,最多阻塞timeout秒,阻塞结束后将引发 Empty 异常;当block为False时,timeout会被忽略并在队列不可用时引发 Empty 异常。
put_nowait(item) 相当于 put(item,False) 。
get_nowait(item) 相当于 get(item,False)。
qsize() 返回队列当前大小。qsize方法的返回值并不保证操作队列时是否会被阻塞。
empty 当队列为空时返回True,否则返回False。empty方法的返回值并不保证操作队列时是否会被阻塞。
full() 当队列以满时返回True,否则返回False。full方法的返回值并不保证操作队列时是否会被阻塞。
task_done() 对该方法的调用表示已经完成了一次对队列的get操作。
join 保持阻塞状态直到队列中的所有数据都已被获取,该方法以Queue.task_done()方法的调用次数为依据进行判断。

你可能感兴趣的:(Python3并发编程)