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*()方法时抛出的异常
传入参数: 无
返回参数: 无
Python的并发并行[2] -> 队列[0] -> queue 模块的更多相关文章
- Python的并发并行[3] -> 进程[0] -> subprocess 模块
subprocess 模块 0 模块描述 / Module Description From subprocess module: """Subprocesses wit ...
- Python的并发并行[1] -> 线程[0] -> threading 模块
threading模块 / threading Module 1 常量 / Constants Pass 2 函数 / Function 2.1 setprofile()函数 函数调用: thread ...
- Python的并发并行[2] -> 队列[1] -> 使用队列进行任务控制
使用队列进行任务控制 1 FIFO与LIFO队列 FIFO(First In First Out)与LIFO(Last In First Out)分别是两种队列形式,在FIFO中,满足先入先出的队列方 ...
- day43-python消息队列二-queue模块
Python提供了Queue模块来专门实现消息队列Queue对象 Queue对象实现一个fifo队列(其他的还有lifo.priority队列,这里不再介绍).queue只有maxsize一个构造参数 ...
- Python的并发并行[0] -> 基本概念
基本概念 / Basic Concept 快速跳转 进程 / Process 线程 / Thread 协程 / Coroutine 全局解释器锁 / Global Interpreter Lock ...
- Python的并发并行[4] -> 并发[0] -> 利用线程池启动线程
利用线程池启动线程 submit与map启动线程 利用两种方式分别启动线程,同时利用with上下文管理来对线程池进行控制 from concurrent.futures import ThreadPo ...
- Python的并发并行[1] -> 线程[1] -> 多线程的建立与使用
多线程的建立与使用 目录 生成线程的三种方法 单线程与多线程对比 守护线程的设置 1 生成线程的三种方法 三种方式分别为: 创建一个Thread实例,传给它一个函数 创建一个Thread实例,传给它一 ...
- Python的并发并行[1] -> 线程[2] -> 锁与信号量
锁与信号量 目录 添加线程锁 锁的本质 互斥锁与可重入锁 死锁的产生 锁的上下文管理 信号量与有界信号量 1 添加线程锁 由于多线程对资源的抢占顺序不同,可能会产生冲突,通过添加线程锁来对共有资源进行 ...
- Python的并发并行[1] -> 线程[3] -> 多线程的同步控制
多线程的控制方式 目录 唤醒单个线程等待 唤醒多个线程等待 条件函数等待 事件触发标志 函数延迟启动 设置线程障碍 1 唤醒单个线程等待 Condition类相当于一把高级的锁,可以进行一些复杂的线程 ...
随机推荐
- 通过slf4j/log4j的MDC/NDC 实现日志追踪
在分布式系统或者较为复杂的系统中,我们希望可以看到一个客户请求的处理过程所涉及到的所有子系统\模块的处理日志. 由于slf4j/log4j基本是日志记录的标准组件,所以slf4j/log4j成为了我的 ...
- Python学习-day20 django进阶篇
Model 到目前为止,当我们的程序涉及到数据库相关操作时,我们一般都会这么搞: 创建数据库,设计表结构和字段 使用 MySQLdb 来连接数据库,并编写数据访问层代码 业务逻辑层去调用数据访问层执行 ...
- a链接点击下载图片到本地(php)
$url="http://pan.baidu.com/share/qrcode?w=150&h=150&url=http://gandao.my".U('Quest ...
- Ubuntu下禁用笔记本自带键盘
想要禁用笔记本自带键盘(Ubuntu)只要2条命令. 1. 打开终端,输入: xinput list ⎡ Virtual core pointer id=2 [master pointer (3)] ...
- HDU 6165 FFF at Valentine(Tarjan缩点+拓扑排序)
FFF at Valentine Time Limit: 6000/3000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others) ...
- spark与storm比对与选型
大数据实时处理平台市场上产品众多,本文着重讨论spark与storm的比对,最后结合适用场景进行选型. 一.spark与storm的比较 比较点 Storm Spark Streaming 实时计算模 ...
- 圆盘自动机 cell
圆盘自动机 cell 一个n-m圆盘自动机,包含n个排列成一圈的方格,它们按1至n编号.每个方格中有一个整数,范围[0,m-1] .圆盘会进行d操作,每次d操作会使得每个方格中的数同时变换,变换为与其 ...
- Codeforces Round #462 (Div. 2)
这是我打的第三场cf,个人的表现还是有点不成熟.暴露出了我的一些问题. 先打开A题,大概3min看懂题意+一小会儿的思考后开始码代码.一开始想着贪心地只取两个端点的值就好了,正准备交的时候回想起上次A ...
- angular.extend(dst,src)的简单示例
自我认为这个方法跟angular.copy(src,dst)有点相似.在angular.extend({},src)时,就可以画等号.这个src只代表一个对象.代码如下:(注意这个src可以有多个对象 ...
- 什么是SetUID
1. 什么是SetUID 我们知道,在linux的命令行下执行“ps”命令时,就会列出当前系统中的所有进程,在其中可以看到每个进程都和用户的真实id关联,实际上,Linux中的每个进程还跟一个称为有效 ...