位置: 编程技术 - 正文

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

  • 商贸企业购销混凝土税率怎么选择
  • 企业所得税退税的会计分录怎么做
  • 接受投资材料
  • 未开票收入以后必须开票吗
  • 增值税发票税号0和O
  • 以前年度应收账款无法收回的账务处理
  • 收到服务费发票摘要怎么写
  • 商业企业月末结转成本
  • 普通发票做账有什么用
  • 结转折旧费会计分录
  • 施工单位对分包单位能罚款吗
  • 企业应纳税所得额计算例题
  • 出租房屋房产税怎么算
  • 企业所得税免税收入和不征税收入
  • 2018一般纳税人印花税减半吗
  • 普票开错了能退税吗
  • 创新券补贴可以算作高新收入吗?
  • 异地预缴本地申报流程
  • 以前年度城建税减免可以计去营业外收入嘛
  • 公司缴纳的社保离职后自己可以缴纳社保
  • 进口货物退税流程
  • 行政单位代管资金怎么做账
  • 售后回租产生的利息怎么做账
  • 五月份开的发票但是七月冲红了七月增值税怎么报
  • 减资弥补亏损是什么行为
  • 哪些项目可以在城镇开发边界外
  • 产值税收是什么意思
  • 红蘑菇是什么松树伞吗
  • 应付账款周转天数长对企业的影响
  • win10开机启动文件夹目录说明
  • 财务新手要注意哪些事项
  • 支付征地补偿款计入什么科目
  • 如何用ai写代码
  • 雷尼尔国家公园攻略
  • laravel 更新数据
  • node js m1
  • addr指令
  • 如何查询发票领到几月份了
  • 新制度设置了应缴财政款科目原制度设置了什么科目
  • 房租费可以一次性摊销吗
  • 设计服务的成本票可以暂估吗
  • 货物运输业增值税
  • 收到房租不开票账务处理
  • 帝国cms专题
  • 新合同旧合同的法律依据
  • Python可变数据类型和不可变数据类型
  • 土地利息可以作为土增扣除吗
  • 使用distinct在mysql中查询多条不重复记录值的解决办法
  • 报销差旅费的进项税额
  • 工程附加税税率
  • sql共享
  • 稳岗补贴支付范围
  • 异地预缴增值税后本地怎么申报
  • 保教费免征增值税政策
  • 增资后持股比例计算
  • 递延收益在资产负债表哪里列示
  • 固定资产报废如何记账
  • 合理损耗怎么算
  • 个体工商户注销代办
  • 资金结存余额在借方还是贷方
  • 带息票据与不带息票据
  • 计提加计抵减额的会计处理
  • 次年发放的奖金怎么入账
  • 内帐外帐的区别与联系
  • sql语句去除重复值
  • gwsloader.exe是什么意思
  • xp录音软件
  • linux vmware卸载
  • win10鼠标怎么换
  • win8切换语言
  • win10在哪里更改软件大小
  • win7更新显卡驱动后黑屏的解决方法
  • js分页逻辑
  • macos安装过程
  • 用python写随机数
  • js中new操作符工作原理
  • unity引擎占用内存多少
  • 济南市市中区二手房
  • 车船税发票丢了怎么补办
  • 买新车的注意事项有哪些比较重要的
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设