位置: 编程技术 - 正文

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

  • 缴纳附加税会计科目怎么做
  • 发票抬头开个人可以吗
  • 房租雇东不开发票只有收据怎么处理?
  • 摄影服务属于哪个开票类目
  • 车辆报废收入如何处理
  • 公司车无偿过户给个人需要什么手续
  • 出口退税是退进项
  • 收到3%的增值税专用发票可以抵扣吗
  • 房地产不可销售的物业有哪些
  • 建筑业增值税税率由11调整到10
  • 一般纳税人取得小规模纳税人的专票可以抵扣吗
  • 学校有税号可以收专票吗
  • 转让非独占许可使用权调整
  • 食堂购买的固定资产可以一次性加计扣除吗
  • 法定盈余公积是留存收益吗
  • 公司购买茶叶应计入哪里
  • 小规模纳税人如何转一般纳税人
  • 给客户打折账务处理
  • 出口布料有退税吗
  • 6%技术服务费是普票还是专票
  • 货物出库的会计分录
  • 销售净利率怎么分析盈利能力
  • 高新技术企业改革
  • win10声音设置面板在哪
  • 关闭密码保护共享后又自动开启
  • 暂估成本能挂账多久
  • 一次摊销法优缺点
  • php根据日期判断星座
  • 辅导期内的企业有哪些
  • vue前端组件库
  • 如何安装wordpress图文教程
  • 母公司将资产划转子公司土地增值税
  • 委托加工不提供原材料会计分录
  • 基于中国国情的中国式现代化具有哪些特色
  • 原始凭证必须来源于外部吗
  • antd form table
  • vue+echarts
  • 预缴增值税怎么算
  • C语言中如何计算除法
  • 查看、修改mysql的用户名和密码
  • 小规模纳税人的条件
  • 税后工资怎么申报个税
  • 行政单位资产报告范文
  • 合并资产负债表少数股东权益怎么计算
  • 外贸企业汇兑损益如何减少
  • 实收资本可以大过注册资本吗
  • 国税一证通
  • 已经开了发票需要退款怎么处理?
  • 仓库做账应该注意些哪些事项
  • 餐饮怎么扣税
  • sqlserver解锁用户命令
  • win8的文件夹选项在哪里
  • win10隐藏文件怎么隐藏
  • win10改win8.1
  • winnook.exe - winnook是什么进程
  • Linux查看文件内容编码
  • win8系统怎么搜索文件
  • fs是什么文件夹
  • 怎么让微软账户获得所有权限
  • Win10系统如何打开任务管理器
  • w10系统输入法
  • win8.1设置在哪
  • find命令支持哪些查找方式
  • Win10计算机管理该文件没有与之关联的应用
  • win7 64位旗舰版电脑鼠标如何才能设置成左手操作?设置鼠标为左手操作的方法
  • window7系统清理
  • 结构 类型
  • jquery实战
  • jquery设置title
  • 网关绑定失败怎么设置
  • dos批处理实例800例
  • stick function
  • 深入理解java
  • 安卓app性能测试
  • eventbus threadmode
  • 河北省国家税务局电子税务局
  • 经营租赁属于什么费用
  • 税务局网上缴税
  • 税务绩效管理4+4+4+n
  • 增值税电子专用发票如何进行冲红处理
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设