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*()方法时抛出的异常

传入参数:

返回参数:

Python的并发并行[2] -> 队列[0] -> queue 模块的更多相关文章

  1. Python的并发并行[3] -> 进程[0] -> subprocess 模块

    subprocess 模块 0 模块描述 / Module Description From subprocess module: """Subprocesses wit ...

  2. Python的并发并行[1] -> 线程[0] -> threading 模块

    threading模块 / threading Module 1 常量 / Constants Pass 2 函数 / Function 2.1 setprofile()函数 函数调用: thread ...

  3. Python的并发并行[2] -> 队列[1] -> 使用队列进行任务控制

    使用队列进行任务控制 1 FIFO与LIFO队列 FIFO(First In First Out)与LIFO(Last In First Out)分别是两种队列形式,在FIFO中,满足先入先出的队列方 ...

  4. day43-python消息队列二-queue模块

    Python提供了Queue模块来专门实现消息队列Queue对象 Queue对象实现一个fifo队列(其他的还有lifo.priority队列,这里不再介绍).queue只有maxsize一个构造参数 ...

  5. Python的并发并行[0] -> 基本概念

    基本概念 / Basic Concept  快速跳转 进程 / Process 线程 / Thread 协程 / Coroutine 全局解释器锁 / Global Interpreter Lock ...

  6. Python的并发并行[4] -> 并发[0] -> 利用线程池启动线程

    利用线程池启动线程 submit与map启动线程 利用两种方式分别启动线程,同时利用with上下文管理来对线程池进行控制 from concurrent.futures import ThreadPo ...

  7. Python的并发并行[1] -> 线程[1] -> 多线程的建立与使用

    多线程的建立与使用 目录 生成线程的三种方法 单线程与多线程对比 守护线程的设置 1 生成线程的三种方法 三种方式分别为: 创建一个Thread实例,传给它一个函数 创建一个Thread实例,传给它一 ...

  8. Python的并发并行[1] -> 线程[2] -> 锁与信号量

    锁与信号量 目录 添加线程锁 锁的本质 互斥锁与可重入锁 死锁的产生 锁的上下文管理 信号量与有界信号量 1 添加线程锁 由于多线程对资源的抢占顺序不同,可能会产生冲突,通过添加线程锁来对共有资源进行 ...

  9. Python的并发并行[1] -> 线程[3] -> 多线程的同步控制

    多线程的控制方式 目录 唤醒单个线程等待 唤醒多个线程等待 条件函数等待 事件触发标志 函数延迟启动 设置线程障碍 1 唤醒单个线程等待 Condition类相当于一把高级的锁,可以进行一些复杂的线程 ...

随机推荐

  1. Space Shooter 太空射击

    1.控制玩家移动 public float speed = 10f; public float xMin = -6.5f; public float xMax = 6.5f; public float ...

  2. Hastable和Dictionary以及ArrayList和(List,LinkedList,数组)的区别

    Hastable和Dictionary的区别:(键值对) 1:单线程程序中推荐使用 Dictionary, 有泛型优势, 且读取速度较快, 容量利用更充分. 2:多线程程序中推荐使用 Hashtabl ...

  3. 洛谷P1101单词方阵

    题目描述 给一n×n的字母方阵,内可能蕴含多个“yizhong”单词.单词在方阵中是沿着同一方向连续摆放的. 摆放可沿着 8个方向的任一方向,同一单词摆放时不再改变方向,单词与单词之间可以交叉,因此有 ...

  4. Opencv3.0.0安装包

    这个资源是Opencv3.0.0安装包,包括Windows软件包,Android软件包,IOS软件包,还有opencv的源代码:需要的下载吧. 点击下载

  5. PAT——甲级1009:Product of Polynomials;乙级1041:考试座位号;乙级1004:成绩排名

    题目 1009 Product of Polynomials (25 point(s)) This time, you are supposed to find A×B where A and B a ...

  6. Android之SeekBar总结(一)

    2015-04-24 SeekBar: 一种特殊的进度条,包含一个滑块用于调节进度值. API 中目录结构如下: 包含几种特殊的属性: 1: max:设置进度条的最大值 .对应方法:setMax(in ...

  7. django orm 之makemigrations和migrate命令

    makemigrations:将模型的更改生成迁移脚本文件.模型所在的app,必须放在settings.py中的INSTALLED_APPS列表中.这个命令有以下几个常用选项: 1.app_label ...

  8. 安卓context(一)

    最近看了一下深入安卓内核,毫无安卓基础的我一头深入不可自拔,看的是云里雾里,第一遍看到一半左右似乎开始失去了效率. 现在开始第二遍,并对看过的重要知识点以个人的理解进行梳理(不免有错的地方,好心人请告 ...

  9. DOM关于高度宽度位置的获取

    假设 obj 为某个 HTML 控件. obj.offsetTop 指 obj 相对于版面或由 offsetParent 属性指定的父坐标的计算上侧位置,整型,单位像素. obj.offsetLeft ...

  10. hdu 1172 猜数字

    猜数字 Time Limit: 20000/10000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submi ...