位置: 编程技术 - 正文

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吗
  • 房地产企业的土地使用税起始时间
  • 境内企业转让境外股权税收
  • 去税务局交的社保能退么
  • 增值税普通发票需要交税吗
  • 租赁房屋的装修
  • 应交增值税最后到哪了
  • 定额发票是啥
  • 职业年金属于应交税费吗
  • 境内个人去境外开设公司
  • 购买库存商品收到发票怎样做分录
  • 分公司应收款转总公司会计分录?
  • 过桥资金法律规定
  • mac 双系统如何调整系统空间
  • 实收资本不到位后果
  • 企业所得税汇算清缴扣除标准2023
  • 因有减免税款不退怎么办
  • php新手入门
  • 账户验证因姓名验证错误导致失败
  • 发票与付款金额不一致违法吗
  • 国有土地出让收入分析报告
  • react img onerror
  • 硬盘最小的存储单位
  • php和mysql的联合使用
  • adamax优化器
  • PHP:imagefilledrectangle()的用法_GD库图像处理函数
  • 小刺猬 (© lorenzo104/Getty Images)
  • pytorch .pt
  • java htmlparser
  • 2023年highway-env更新之后的使用记录(含DDQN,DuelingDQN,DDQN+OtherChanges) 入门到入土,再踩坑就不玩原神了
  • php新版本特性
  • prompt命令用法
  • 充话费如何开公司发票
  • 子公司和分公司的区别
  • 出差补贴要不要发票呢?
  • db2 insert timestamp
  • 税局代开专票对方隔月退回重开如何做账务处理呢?
  • 事业单位结余是什么意思
  • 查账征收与核定征收在哪里看
  • 卸车费属于什么费用类别
  • 未完工工程如何验收
  • 其他应收款待抵扣借方是什么意思啊
  • 没有销货清单的发票可以报销吗
  • mysql导出查询结果sql
  • 在linux系统中安装软件
  • windows环境是什么意思
  • win8.1如何更改开始菜单
  • 怎么判断进程是否存在
  • linux用
  • window10删除自带输入法
  • 计算机图形学考研院校
  • bootstrap 图表插件
  • android:PopupWindow的使用场景和注意事项
  • unity3d特效教程
  • javascript概述及作用
  • vue使用mixin
  • linux 部署
  • tomcat8.5.8
  • 以下代码的运行结果是哪一项
  • 有哪些比较好的android的框架
  • python图片验证码输入错误不能点登陆
  • 代码实现观察者模式
  • 北京市国家税务局
  • 汽车公司户转个人户
  • 深圳国税总局
  • 税收优惠政策有经营和居民住宅出租
  • 资源综合利用企业所得税优惠
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设