位置: 编程技术 - 正文

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

  • 增值税申报可以作废几次
  • 固定资产未转固属于什么风险
  • 税收国家和地方的比例
  • 开农贸市场挣钱吗
  • 个人收到银行承兑汇票
  • 一般纳税人降为小规模还能升为一般纳税人吗
  • 企业收到生育津贴但不发给员工怎么办
  • 土地使用权出让金多少钱一平米
  • 缴交社保基金会计分录怎么写?
  • 进口设备在海关处保存2年出售时 计算税怎么算
  • 利息保障倍数为负数,是偿债能力弱的表现
  • 医院的固定资产是由财务负责的吗?
  • 支付跨年租金如何处理
  • 有了营业执照就可以买社保了吗
  • 稿酬所得个人所得税税率
  • 报个税系统叫啥
  • 企业所得税期间费用利息收支
  • 多计提的社保费,可否计入营业外收入
  • 怎么判断分红前已提取足够法定公积金?
  • 开票税额与申报税额差一分账务怎么处理
  • 税务罚款计入哪个会计科目
  • 递延资产主要包括哪些
  • 发票收到本月进账怎么办
  • win11多任务怎么用
  • 电脑怎么安装安卓软件
  • 汇算清缴时研发费用加计扣除怎么做账
  • 间接费用是什么费用
  • 免抵退税如何进账
  • 公司租赁办公室要注意什么
  • 无形资产摊销的会计及账务处理
  • php实现和工作原理
  • 不带息票据按面值入账
  • thinkphp 模块
  • thinkphp项目怎么部署
  • [Vue warn]: Error in render: “TypeError: Cannot read properties of undefined(reading“category1Name“
  • iterator用法 移除对象
  • PHP自定义函数实现计算机整数的四次方
  • 金税盘全额抵扣政策
  • 公司发放给员工的出差补助需要合并计算个税吗
  • 会计要考哪些证书,难度如何
  • java中空字符怎么表示
  • 织梦怎么套模板
  • 自行研发非专利技术入账金额包括增值税吗
  • 织梦模板改成帝国模板
  • 购入原材料要交印花税吗
  • 转租行为的税务处理方法
  • 会计利润属于什么会计科目
  • 企业接管的方式有
  • 纳税人提供不动产经营租赁服务增值税征收管理暂行办法
  • 销项税用转出吗
  • 全额计提坏账准备有什么作用
  • 上个月计提多了,这个月怎么办?
  • 职工福利费的开支是什么
  • 一般纳税人工程劳务发票税率是多少
  • 转账手续费没有发票能税前扣除吗
  • 采购业务 货物收到 发票收到
  • 金税盘离线是什么意思
  • 一次性付款的优势
  • 私营公司待摊费怎么算
  • mysql5.7.21安装
  • windows任务管理器怎么打开
  • Office 2007在Windows Vista中出现的反常字体问题的解决办法
  • 深入解析linux内核
  • xp系统问题
  • ubuntu怎么播放视频
  • win10系统玩lol弹出来
  • mac新版系统
  • win7设置宽带拨号
  • 照相机文件名
  • xp磁盘空间不足怎么办
  • backtracker
  • jquery.ui
  • opengl csdn
  • quick-lua touch 触摸事件
  • python flask快速入门与进阶
  • 税务局电话咨询电话
  • 北京通个人认证
  • 税务报运维需要多长时间
  • 微山湖到底属于哪里
  • 什么是坚持依法治国的重点任务和主体工程
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设