python 3.x 学习笔记16 (队列queue 以及 multiprocessing模块)
1.队列(queue)
用法:
import queue
q = queue.Queue() #先进先出模式
q.put(1) #存放数据在q里
作用: 1)解耦
2)提高效率
class queue.Queue(maxsize=0) #先入先出
class queue.LifoQueue(maxsize=0) #后进先出
class queue.PriorityQueue(maxsize=0) #存储数据时可设置优先级的队列
Queue.qsize() # 返回队列的大小
Queue.empty() # 如果队列为空,返回True,反之False
Queue.full() #如果队列满了,返回True,反之
Queue.get([block[, timeout]]) # 获取队列,timeout等待时间
Queue.get_nowait() #相当Queue.get(False)
Queue.put(item) #写入队列,timeout等待时间( 非阻塞)
Queue.put_nowait(item) # 相当Queue.put(item, False)
Queue.task_done() #在完成一项工作之后,Queue.task_done()函数向任务已经完成的队列发送一个信号
Queue.join() #实际上意味着等到队列为空,再执行别的操作
2.python多线程不适合cpu密集操作型的任务,适合io操作密集型的任务
3.multiprocessing模块
官方详解:https://docs.python.org/3.5/library/multiprocessing.html#module-multiprocessing
1).pipe(管道)
multiprocessing.Pipe()即管道模式,调用Pipe()返回管道的两端的Connection。
2).manager
multiprocessing.manager()
用于多进程之间信息的共享
3).Pool(进程池)
multiprocessing.Pool()
1)进程池内部维护一个进程序列,当使用时,则去进程池中获取一个进程,如果进程池序列中没有可供使用的进进程,那么程序就会等待,直到进程池中有可用进程为止。
2)在windos上必须写上if __name__=='__main__':之后才生成进程池才不会出错进程池中进程执行完毕后再关闭,如果注释,那么程序直接关闭。
3)进程池两个方法
apply() 穿行
apply_async() 并行
注:pool.apply_async(func=Foo, args=(i,), callback=Bar)#callback回调Bar
6.if __name__=='__main__':
_name__ 是当前模块名,当模块被直接运行时模块名为 __main__ 。这句话的意思就是,当模块被直接运行时,以下代码块将被运行,当模块是被导入时,代码块不被运行。
python 3.x 学习笔记16 (队列queue 以及 multiprocessing模块)的更多相关文章
- Python--线程队列(queue)、multiprocessing模块(进程对列Queue、管道(pipe)、进程池)、协程
队列(queue) 队列只在多线程里有意义,是一种线程安全的数据结构. get与put方法 ''' 创建一个“队列”对象 import queue q = queue.Queue(maxsize = ...
- python网络爬虫学习笔记
python网络爬虫学习笔记 By 钟桓 9月 4 2014 更新日期:9月 4 2014 文章文件夹 1. 介绍: 2. 从简单语句中開始: 3. 传送数据给server 4. HTTP头-描写叙述 ...
- Python Built-in Function 学习笔记
Python Built-in Function 学习笔记 1. 匿名函数 1.1 什么是匿名函数 python允许使用lambda来创建一个匿名函数,匿名是因为他不需要以标准的方式来声明,比如def ...
- Requests:Python HTTP Module学习笔记(一)(转)
Requests:Python HTTP Module学习笔记(一) 在学习用python写爬虫的时候用到了Requests这个Http网络库,这个库简单好用并且功能强大,完全可以代替python的标 ...
- Ext.Net学习笔记16:Ext.Net GridPanel 折叠/展开行
Ext.Net学习笔记16:Ext.Net GridPanel 折叠/展开行 Ext.Net GridPanel的行支持折叠/展开功能,这个功能个人觉得还说很有用处的,尤其是数据中包含图片等内容的时候 ...
- SQL反模式学习笔记16 使用随机数排序
目标:随机排序,使用高效的SQL语句查询获取随机数据样本. 反模式:使用RAND()随机函数 SELECT * FROM Employees AS e ORDER BY RAND() Limit 1 ...
- golang学习笔记16 beego orm 数据库操作
golang学习笔记16 beego orm 数据库操作 beego ORM 是一个强大的 Go 语言 ORM 框架.她的灵感主要来自 Django ORM 和 SQLAlchemy. 目前该框架仍处 ...
- Node.js学习笔记(2):基本模块
Node.js学习笔记(2):基本模块 模块 引入模块 为了编写可维护的代码,我们把很多函数分组,分别放到不同的文件里,这样,每个文件包含的代码就相对较少,很多编程语言都采用这种组织代码的方式.在No ...
- Apollo学习笔记(一):canbus模块与车辆底盘之间的CAN数据传输过程
Apollo学习笔记(一):canbus模块与车辆底盘之间的CAN数据传输过程 博主现在从车载自组网信道分配和多跳路由转向了自动驾驶,没啥经验,想快些做出来个Demo还是得站在巨人的肩膀上才行,我选择 ...
随机推荐
- 最简单的一致性Hash算法实现
import java.util.Collection;import java.util.SortedMap;import java.util.TreeMap; public class Consis ...
- IIS网站调用FFMPEG执行截图命令失败的原因(暂时记录)
之前有个功能是用户上传视频后,网站对其进行截图处理.功能采用FFMPEG操作,在本机新建一个小程序进行调试时是没有问题的. 可功能原封不动挪到项目里,截图竟然失败了,于是开始排查. 期初以为是参数设置 ...
- 超酷消息警告框插件(SweetAlert)
今天给大家推荐一款不错的超酷消息警告框–SweetAlert:SweetAlert是一款不需要jQuery支持的原生js提示框,风格类似bootstrap.它的提示框不仅美丽动人,并且允许自定义,支持 ...
- H3C三层交换机S5500初始配置+网络访问策略
DHCP中继配置命令 dhcp relay address-check enable 命令用来使能DHCP 中继的地址匹配检查功能. undo dhcp relay address-check ena ...
- 如何检查Windows网络通信端口占用
最近本地测试jsp程序发现tomcat启动失败,无法监听8080端口,也没记得别的什么程序占用了8080端口,干脆就改成了8090端口先用着.今天找了找Windows上查看网络通信端口占用的方法. 先 ...
- nginx的headers_more模块的使用
nginx的headers_more模块用于 添加.修改或清除 请求/响应头,该模块不是nginx自带的,默认不包含该模块,需要另外安装.幸运的是openresty默认包含了该模块,可以直接使用. 该 ...
- javaSE常用的英语单词
1.continut 使......继续 2.break 打破 3.switch 开关:转换:鞭子 4.case 实例:情况:箱 5.Object 目标:物体 6.Class 阶级:班级:种类 7.p ...
- django与mysql实现简单的增删查改
模型定义 from django.db import models class Grades(models.Model): g_name = models.CharField(max_length=2 ...
- Loaded APR based Apache Tomcat Native library 1.1.24 using APR version 1.4.6.
Loaded APR based Apache Tomcat Native library 1.1.24 using APR version 1.4.6. 我复制的几个地方: MySql C:\WIN ...
- asp.net mvc-identity初步学习
Install-Package Microsoft.AspNet.Identity.EntityFramework Install-Package Microsoft.AspNet.Identity. ...