位置: 编程技术 - 正文

Python多进程库multiprocessing中进程池Pool类的使用详解(python多进程模块)

编辑:rootadmin

推荐整理分享Python多进程库multiprocessing中进程池Pool类的使用详解(python多进程模块),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:python多进程模块,python 多进程 gil,python多进程库有哪些,python 多进程管理,python多进程multiprocessing,python2.7多进程,python 多进程库,python多进程操作数据库,内容如对您有帮助,希望把文章链接给更多的朋友!

问题起因

最近要将一个文本分割成好几个topic,每个topic设计一个regressor,各regressor是相互独立的,最后汇总所有topic的regressor得到总得预测结果。没错!类似bagging ensemble!只是我没有抽样。文本不大,大概行,topic个数为8,于是我写了一个串行的程序,一个topic算完之后再算另一个topic。可是我在每个topic中用了GridSearchCV来调参,又要选特征又要调整regressor的参数,导致参数组合一共有种。我真是低估了调参的时间,程序跑了一天一夜最后因为忘记import一个库导致最终的预测精度没有算出来。后来想到,既然每个topic的预测都是独立的,那是不是可以并行呢?

Python中的多线程与多进程

但是听闻Python的多线程实际上并不能真正利用多核,所以如果使用多线程实际上还是在一个核上做并发处理。不过,如果使用多进程就可以真正利用多核,因为各进程之间是相互独立的,不共享资源,可以在不同的核上执行不同的进程,达到并行的效果。同时在我的问题中,各topic相互独立,不涉及进程间的通信,只需最后汇总结果,因此使用多进程是个不错的选择。

multiprocessing

一个子进程

multiprocessing模块提供process类实现新建进程。下述代码是新建一个子进程。

上述代码中p.join()的意思是等待子进程结束后才执行后续的操作,一般用于进程间通信。例如有一个读进程pw和一个写进程pr,在调用pw之前需要先写pr.join(),表示等待写进程结束之后才开始执行读进程。

Python多进程库multiprocessing中进程池Pool类的使用详解(python多进程模块)

多个子进程

如果要同时创建多个子进程可以使用multiprocessing.Pool类。该类可以创建一个进程池,然后在多个核上执行这些进程。

输出结果如下:

上述代码中的pool.apply_async()是apply()函数的变体,apply_async()是apply()的并行版本,apply()是apply_async()的阻塞版本,使用apply()主进程会被阻塞直到函数执行结束,所以说是阻塞版本。apply()既是Pool的方法,也是Python内置的函数,两者等价。可以看到输出结果并不是按照代码for循环中的顺序输出的。

多个子进程并返回值

apply_async()本身就可以返回被进程调用的函数的返回值。上一个创建多个子进程的代码中,如果在函数func中返回一个值,那么pool.apply_async(func, (msg, ))的结果就是返回pool中所有进程的值的对象(注意是对象,不是值本身)。

上述代码输出结果如下:

与之前的输出不同,这次的输出是有序的。

如果电脑是八核,建立8个进程,在Ubuntu下输入top命令再按下大键盘的1,可以看到每个CPU的使用率是比较平均的,如下图:

在system monitor中也可以清楚看到执行多进程前后CPU使用率曲线的差异。

标签: python多进程模块

本文链接地址:https://www.jiuchutong.com/biancheng/375432.html 转载请保留说明!

上一篇:pip安装Python库时遇到的问题及解决方法(python安装pip.whl)

下一篇:Django中login_required装饰器的深入介绍

  • 委托合同有效吗
  • 个人独资企业出资额是注册资本吗
  • 冲回多提的坏账准备分录为
  • 企业接受捐赠固定资产计入什么科目
  • 工程保险谁负责
  • 单位购买预付卡
  • 销售商品,提供服务以及从事其他经营活动
  • 合伙企业分配利润需要全体合伙人同意吗
  • 非居民企业直接投资居民企业取得股息
  • 上市公司现金流充足说明什么
  • 核定征收企业注销后安全吗
  • 企业所得税季度预缴怎么计算
  • 非营利性代收代付费用会计处理怎么做?
  • 出口退税转为免税
  • 当月发票已认证还能作废吗
  • 运输营改增
  • 公司租赁厂房开几个点发票
  • 通用机打发票没写税额
  • 加速折旧税收优惠
  • 2021年购买车辆的进项税能抵扣吗
  • 2021最新车船税
  • 补缴的增值税可以计入以前年度损益调整
  • 待抵扣进项税 待认证进项税
  • 企业买进基金用什么账户
  • 计提坏账准备的会计分录
  • 怎么操作win10系统
  • 核定征收印花税计算公式
  • arp防火墙是什么意思
  • 鸿蒙系统蓝牙耳机声音小怎么办
  • 小米无线路由器internet黄灯
  • win11怎么打开设置
  • 城建税申报表怎么作废
  • 支付押金无法收取怎么办
  • 收到公司投资属于什么会计科目
  • 蝴蝶兰的养殖方法和注意事项 盆栽蝴蝶兰烂根
  • 预缴所得税会计分录咋做
  • php递归算法经典题目
  • 违约金税目
  • erphpdown插件安装教程
  • 第二季度所得税可以弥补以前年度亏损吗
  • 飞机票电子发票能报销吗
  • 纳税申报系统里怎么填写
  • 当月银行账可以下个月做吗
  • 帝国cms模板文件放在哪里
  • 小企业的固定资产的折旧方法可以根据需要
  • 单位买车和个人买车交税有何不同
  • 企业所得税季度预缴纳税申报表
  • 资金占用费怎么写
  • 息税前利润与盈亏平衡点
  • 物业公司代收水费合理吗
  • 公摊水电费计入什么科目
  • 未分配利润转增股本要交税吗
  • 律师事务所优惠政策
  • 预收账款是什么资产
  • 哪些账簿可以跨市登记
  • 苹果mac升级系统
  • centos7服务器配置
  • 系统如何修改
  • 蓝屏 win7
  • windows8.1的图片
  • windows10运用
  • 电源管理器在哪
  • cocoswot
  • cocos2dx4.0教程
  • android开发环境配置
  • windows 10一
  • unity3d怎么全屏
  • 置顶pyq会被自己屏蔽的人看到吗
  • u3d transform
  • unity3.
  • jquery.browser
  • jquery的each循环
  • javascript教程
  • 美容行业增值税率是多少
  • 内蒙古电子税务局开票流程
  • 重庆市网上税务局官网app下载
  • 浙江省国税公务员工资
  • 减免性质代码是什么意思
  • 已经开具的电子专票怎么重新下载
  • 如何查询税控盘口令和密码
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设