位置: 编程技术 - 正文

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

  • 增值税税控系统技术维护费
  • 物业公司代收电费怎么开票
  • 抵消损益分录
  • 银行开户费用计入
  • 怎样查是否为一类银行卡
  • 餐饮业加计递减怎么算
  • 税前扣除凭证的内部凭证
  • 租赁算投资吗
  • 免抵退分录怎么做
  • 公司章程上的出资时间2050年
  • 购进原材料验收入库,贷款商业汇票结算
  • 外账的作用
  • 没有对公账户的公司怎么注销
  • 境外企业开票没有税号怎么办?
  • 意外保险计入职工薪酬
  • 雇主责任险会计分录
  • 查账征收的企业所得税什么时候开始汇算
  • 如何在excel中添加多行空白
  • 预付账款主要是
  • 发票未报送怎么回事
  • 固定资产多少可以费用化
  • php验证码扭曲效果怎么做
  • 总资产周转次数与总资产周转率
  • 威尼斯海滩滑板场
  • CNN+LSTM+Attention实现时间序列预测(PyTorch版)
  • 年终奖并入综合所得
  • php判断数组是否为空的函数
  • WINDOWS10系统怎样给电脑分区
  • 出口退税需要提供什么
  • 查看redis节点
  • 股东分红的会计处理方法
  • 区块链教程大全
  • php中的数据类型有哪些?
  • php如何上传文件
  • 原材料用于在建工程增值税如何处理
  • 注销营业执照的电话号码是多少
  • 打开的ps关不掉
  • 以厂房入股会计怎么做账
  • 没进项票
  • 企业报表年报
  • 帝国cms使用手册
  • access使用查询向导固定常数
  • 保证增信行通俗理解
  • mysql时间格式转换函数
  • 个税申报填错了就这样报了怎么办
  • 资本公积账务处理办法
  • 已开普通发票记账联丢失怎么办?
  • 销售费用期末余额
  • 兼职员工对公司的好处
  • 车船税交不交印花税
  • 转让无形资产的收入应计入什么科目
  • 开出去的发票没有进项发票怎么核算成本?
  • 挂靠单位账务处理是?
  • 本月没有认证的发票怎么做账
  • 固定资产租赁费评估
  • 收入可以直接转成本吗?
  • 未抵扣进项税额转出会计分录
  • 退回的附加税能退回来吗
  • 3%税率专票为什么不能抵扣
  • 旅游费的发票可以进成本吗?
  • 企业利润的构成内容
  • 科目汇总表里的应交税费
  • 固定资产多少金额必须招标
  • 如何设置固定资产二级联动下拉菜单
  • centos rpm安装方法
  • windows server 2008的技巧:防止ping的方法
  • vmware安装redhat6.5
  • Centos系统里screen命令如何使用?Centos系统里screen命令的使用方法
  • xp系统安装条件
  • ubuntu flash player
  • schost.exe - schost是什么进程 有什么用
  • windows10预览版是什么
  • win7系统电脑开不了机怎么办
  • 点击滑块是什么意思
  • ftp下载工具能自动登录ftp服务器
  • javascript的
  • js取反运算符
  • 简单的比较
  • 广东省电子税务局登录方式
  • 交17000办的保险是什么保险
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设