位置: 编程技术 - 正文

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

  • 外经证预交税怎么算
  • 团建费用会计科目
  • 房地产开发企业增值税税率
  • 公关费用明细表
  • 库存商品变价出现原因
  • 企业录用失业人员有税收优惠吗
  • 暂估入库产品行程影响所得税汇算清缴吗
  • 处置交易性金融资产发生的交易费用
  • 事业单位属于一级单位吗
  • 已过认证周期什么意思
  • 海关完税凭证抵扣税率
  • 油票发票可以抵进项税吗
  • 小规模纳税人优惠政策类型怎么选
  • 在建工程进项税可以抵扣吗
  • 一个产品要有什么认证
  • win11任务管理器在哪里打开
  • 支付拍卖成交金额是多少
  • 天津市残保金缴纳标准
  • 商品流通会计科目
  • PHP:pg_escape_string()的用法_PostgreSQL函数
  • 营改增建筑企业增值税
  • 会计分录的表现形式有
  • 什么情况下计提信用减值损失
  • 工程竣工结算资料存档几年
  • 企业固定资产计提折旧是以什么为前提
  • PHP:imageellipse()的用法_GD库图像处理函数
  • 外籍人员一次性奖金
  • crontab不执行的原因和解决方案
  • smarty怎么用
  • 文化建设事业费优惠政策
  • phpmyadmin无法登陆mysql数据库
  • 纳税人性质是什么
  • 坏账准备收不回来怎么办
  • 为什么说网络安全靠人民
  • 华为mate主题
  • python getpass模块
  • list删除某个元素 python
  • 商业积分消费模式
  • 扣税免除项
  • 2022年最新装修风格
  • mongodb数据库教程
  • 织梦怎么调用当前栏目下的文章
  • 公司的现金收入包括
  • 捐赠支出汇算清缴需要调增吗
  • sqlserver2005 master与msdb数据库备份恢复过程
  • 认缴资本怎么填
  • 一般纳税人什么时候用简易计税
  • 样品费计入
  • 城建税50%减免条件
  • 实收资本(或股本)是什么意思
  • 村集体经济组织架构
  • 年度所得税汇算清缴报告在哪打印
  • 无票销售纳税后怎么处理
  • 单位经办人给员工发工资
  • 查账补缴的税的账怎么做
  • 注册资本金印花税税率是2.5还是5
  • 机票 进项抵扣
  • 计提税金如何进项抵扣
  • win8.1使用技巧
  • centos清理磁盘空间
  • centos nis
  • win7电脑总是自动安装乱七八糟的软件
  • win8 电话激活
  • linux init.h
  • win10预览版21h2
  • cocos2dx怎么用
  • cocos html
  • unity www读取本地视频文件和外部视频文件 播放视频动画和视频声音
  • jquery跳出循环
  • python中判断
  • 可实现的系统
  • [置顶]bilinovel
  • jquery+ajax实现注册实时验证实例详解
  • 批处理删除除了某个文件外的所有文件
  • 安卓绘图软件推荐
  • insmod: init_module 'hello.ko' failed (Exec format error)
  • jquery鼠标移入移出切换图片
  • js中prototype的作用
  • 企业税务状态查询网站
  • 如何查询有没有交医保费用
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设