位置: 编程技术 - 正文

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

  • 厂家返点是什么意思
  • 增值税留抵抵欠税政策解读
  • 销售商品收到转账支票计入什么科目
  • 关税的税收主体是外国的进出口商
  • 预提车间租入固定资产租金800元
  • 增值税有留底怎么减少留底
  • 收到红字信息表不能直接开具
  • 金蝶软件预收账款明细
  • 个体餐饮要交什么税
  • 三栏式明细账科目编号怎么填
  • 个人抬头发票可以抵税个人所得税吗
  • 自行建造固定资产中的自营工程,在领用工程物资
  • 计税依据的三种类型
  • 捐赠财产
  • 超额库存现金
  • 销售产生的增值税
  • 零税率发票可以冲成本吗
  • 三证合一怎么查询
  • 承兑汇票漏章证明怎么写?
  • 企业财务内部控制的主要内容有哪些
  • 哪些税计入原材料费用
  • 社保扣款是根据每个月实发工资么
  • 药店 医保收入占比
  • 主营业务收入平均增长率计算例题
  • 银行融资成本计算方法
  • 上月库存占比怎么算
  • edge浏览器总是打开新的网页
  • linux yum update
  • 错账改正方法
  • 短期借款和短期贷款
  • 冈山平原
  • 转让房屋土地增值税如何计算
  • 担保赔偿准备金和未到期责任准备金实例
  • 存货非正常损失的所得税处理
  • laravel中的session有效期
  • 坏账核销能否增加利润
  • 工会经费和残保金怎么做账
  • 今日清明是清明开始还是结束
  • 社保基数跟个税差1仟多有风险吗
  • 给深度学习研究生的入门建议(未完待续ing)
  • php教程 ftp 函数
  • 应收账款周转天数减少说明什么
  • wndgui降级
  • 进销存使用视频
  • python 协程 yield
  • 固定资产已提完折旧报废后如何处理
  • 小规模纳税人销售货物税率是多少
  • 企业分配股权
  • 陈列费怎么开票
  • 企业长期借款的渠道有哪些
  • 存货成本核算方式
  • 应收账款的账龄怎么分析
  • 专利权摊销如何计算
  • 劳务费是否属于工资
  • 充油卡未收发票怎么办
  • 企业职工福利费可用于职工的医疗卫生费用
  • 劳务派遣员工工会福利谁发放
  • 差旅费包干管理办法
  • 小规模纳税人标准500万是含税吗
  • 公司往来借款怎么做账
  • 哪些个体户要报残保金
  • 财产清查存在的问题及原因分析
  • win8.1 升级
  • 开机时显示
  • windows xp密码忘记怎样解锁
  • mac怎么打开macintosh
  • win10通知中心
  • win7 ctrl+alt+del
  • win8安装步骤
  • ubuntu怎么将文件传送到电脑
  • 铁嘴啥意思
  • 批处理重启后继续运行
  • unity3d手机怎么打开
  • 对activity的四种启动模式的理解
  • NGUI学习:(1)spine导入后图层顺序的问题
  • 安卓开发上下滑动功能界面
  • javascript 加法
  • 润泽一词出自哪里
  • 国税地税征管
  • 复印店开什么发票
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设