Python的并发并行[2] -> 队列[0] -> queue 模块

queue 模块 / queue Module


 

1 常量 / Constants

Pass

2 函数 / Function

Pass

3 / Class

3.1 Queue

类实例化:queue = queue.Queue(maxsize=0)

类的功能:用于生成一个先入先出队列实例

传入参数: maxsize

maxsize: int类型,队列的最大值,无空间时阻塞,未指定时为无限队列

返回参数: queue

queue: instance类型,生成的先入先出队列实例

3.1.1 put()方法

函数调用: queue.put(item, block=True, timeout=None)

函数功能:将item放进队列中

传入参数: item, block, timeout

item: int/str/obj等类型,放进队列中的项目

block: bool类型,设置阻塞,True则阻塞,False则会引发异常

timeout: None/int类型,设置阻塞超时时间(s),None则无限时阻塞

返回参数:

3.1.2 get()方法

函数调用: item = queue.get(block=True, timeout=None)

函数功能:将item从队列中取出

传入参数: block, timeout

block: bool类型,设置阻塞,True则阻塞,False则会引发异常

timeout: None/int类型,设置阻塞超时时间(s),None则无限时阻塞

返回参数: item

item: int/str/obj等类型,从队列中取出的项目

3.1.3 put_nowait()方法

函数调用: queue.put_nowait(item)

函数功能:无等待将item放进队列中,相当于put(item, False),失败则引发Full异常

传入参数: item

item: int/str/obj等类型,放进队列中的项目

返回参数:

3.1.4 get_nowait()方法

函数调用: item = queue.get_nowait()

函数功能:无等待将item从队列中取出,相当于get(False),失败则引发Empty异常

传入参数:

返回参数: item

item: int/str/obj等类型,队列中取出的项目

3.1.5 task_done()方法

函数调用: queue.task_done()

函数功能: 用于表明一个任务已经完成,设置完成标志,常用于队列的消耗线程,每一个get()函数取出一个item,随后可以设置一个task_done,当所有队列的任务都标记完成后,join将释放阻塞

传入参数:

返回参数:

3.1.6 join ()方法

函数调用: queue.join()

函数功能:用于阻塞当前的线程,等待join之前所有的队列(包括join之前入列并出列的任务)任务都设置了task_done标志后,才会解除阻塞

传入参数:

返回参数:

3.1.7 qsize()方法

函数调用: size = queue.qsize()

函数功能:返回当前队列的大小(由于其他线程存在修改,该值并不准确,为近似值)

传入参数:

返回参数: size

siez: int类型,队列中item的数量

3.1.8 empty()方法

函数调用: status = queue.empty()

函数功能:返回当前队列的状态,为空返回True,否则返回False,与qsize一样,返回的是一个近似值,若需要等待所有队列结束,建议使用join()函数

传入参数:

返回参数: status

status: bool类型,True表示当前队列为空

3.1.9 full()方法

函数调用: status = queue.full()

函数功能:返回当前队列的状态,队列已满返回True,否则返回False,同样返回的是一个近似值

传入参数:

返回参数: status

status: bool类型,True表示当前队列为空

3.2 LifoQueue

类实例化:queue = queue.LifoQueue(maxsize=0)

类的功能:用于生成一个后入先出队列实例

传入参数: maxsize

maxsize: int类型,队列的最大值,无空间时阻塞,未指定时为无限队列

返回参数: queue

queue: instance类型,生成的后入先出队列实例

Note:

对于LifoQueue类,其基类是Queue,在源代码中重定义了Queue的_init, _qsize, _put, _get函数,使其在队列的处理顺序上有所不同(其本质为向队列列表中取出item时_get()函数使用的是popleft函数还是pop函数),其父类的函数均可以继承使用。

3.3 PriorityQueue

类实例化:queue = queue.PriorityQueue(maxsize=0)

类的功能:用于生成一个优先级队列实例,最小的最优取出

传入参数: maxsize

maxsize: int 类型,队列的最大值,无空间时阻塞,未指定时为无限队列

返回参数: queue

queue: instance类型,生成的优先级队列实例

Note:

对于PriorityQueue类,其基类也是Queue,同样在源代码中重定义了Queue的_init, _qsize, _put, _get函数,使其在队列的处理顺序上有所不同(其本质为向队列列表中取出item时_get()使用了heappop函数,而放入时使用了heappush函数),父类函数同样可继承使用。

3.4 Empty异常类

类实例化:

类的功能:用于当队列为空且调用get*()方法时抛出的异常

传入参数:

返回参数:

3.5 Full异常类

类实例化:

类的功能:用于当队列已满且调用put*()方法时抛出的异常

传入参数:

返回参数:

posted @ 2018-01-01 12:40  StackLike  阅读(456)  评论(0编辑  收藏  举报