位置: 编程技术 - 正文

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装饰器的深入介绍

  • 资产负债表中没有实收资本
  • 社团费用报销制度
  • 宣传费属于什么税目
  • 五金配件领用管理流程
  • 电子行程单自己打印
  • 股东在两个公司上班好吗
  • 红字发票信息表填好后再怎么操作
  • 注册公司服务费是多少
  • 全国统一吗?
  • 月初结存材料成本差异
  • 生产经营期间固定资产报废清理的净损失
  • 预收装修款并开发票如何转成本?
  • 收到股东增资款账务处理怎么做账
  • 会计审计合同
  • 文化事业建设费的征收范围
  • 借款合同 增值税
  • 建筑业预征缴纳税款
  • 房产继承税征收标准是多少
  • 个人代开普通发票需要出税费吗?
  • 手撕税票去哪可以弄到
  • 年报填写中,认缴出资时间怎么填?
  • 出口退税网上申报视频
  • 物业公司安装监控
  • 企业网银使用
  • 成品油发票长什么样
  • 合作建房分配的房屋
  • 成本费用总额包括信用减值损失吗
  • 小微企业税收优惠政策最新2023
  • 滴滴出行电子发票备注怎么写
  • 票据质押出票如何操作
  • 工会经费申报的依据
  • win11任务管理器在哪里打开
  • php数组函数输出《咏雪》里有多少"片"字
  • uni-app实战教程
  • 录入财务凭证
  • php close
  • 外贸企业进料加工复出口退税政策
  • 将资本公积转为实收资本什么变了
  • 政府会计制度中固定资产报废的账务处理
  • 高新技术企业取消资格怎么处罚
  • 财政贴息会计处理怎么理解
  • 微信收款计入哪个科目
  • 企业收取的罚款需要交企业所得税吗
  • 商业承兑汇票在网银上怎么查询
  • 公司注销前欠客户钱
  • 保险理赔进项税额转出
  • 企业的业务招待费属于什么费用
  • 车辆通行费
  • 税务局退回水利基金账务怎么处理
  • 电子承兑汇票是24小时签收吗
  • 当月销售次月开票成本怎么结转
  • 固定资产发票未到可以确认固定资产吗
  • 会计从业人员信息查询
  • 基本户转账法人会知道吗
  • sql解析原理
  • fedora系统怎么设置停电关机
  • solaris 2020
  • win8网络连接
  • win8 分屏
  • linux快速查找历史命令
  • windows8任务管理器在哪
  • win7系统代理在哪里设置
  • win10系统无法安装到gpt分区
  • win8操作系统如何安装
  • Win7系统打开IE提示“堆栈满溢”的多种解决方案
  • win8电脑路由器网络受限怎么办
  • unity3D游戏开发
  • win2000停止服务
  • python中ridge
  • jQuery的 $.ajax防止重复提交的两种方法(推荐)
  • javascript中substr,substring,slice.splice的区别说明
  • javascript学习指南
  • javascript入门教学
  • 安卓手机 监听功能
  • android如何使用
  • libgdx robovm admob IOS SDK的绑定
  • 黑龙江省国税局网站
  • 浙江宁波江北区都有哪些大学?
  • 建设工程勘察设计单位可跨部门跨地区承揽勘察设计业务
  • 纳税申报的期限是什么意思
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设