位置: 编程技术 - 正文

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

  • 初级会计职称能加多少工资
  • 船舶吨税范围
  • 疫情期间社保单位不交个人吃亏吗
  • 企业如何代员工缴社保
  • 劳务报酬和工资薪金哪个税率高
  • 辞退福利全部计入当期
  • 暂估入库发票回收怎么办
  • 计提坏账准备怎么理解
  • 房地产企业预收账款预缴企业所得税
  • 房地产开发企业会计科目
  • 钻井勘探支出已费用化的探井
  • 预收款未开票账务处理
  • 吸收合并控股合并新设合并的区别
  • 发生成本支出发票未到
  • 享受所得税减免优惠的生产性外商投资企业包括
  • 汽车公司场地租金怎么算
  • 装修公司在装修完后增加费用
  • 交股权印花税需要什么材料
  • 回迁安置房税收优惠
  • 多计提的费用怎么调整
  • 增值税留抵税额会计科目
  • 免征增值税的会计处理方法有哪些
  • 证券资金利息
  • 主营业务收入的计算公式
  • PHP+Mysql+jQuery文件下载次数统计实例讲解
  • 企业所得税费用扣除比例
  • php浮点数转为字符串
  • jsPDF + html2canvas A4分页截断 完美解决方案(含代码 + 案例)
  • 生产型出口企业免抵退
  • 哈利法塔里面有什么
  • php连接数据表
  • Laravel 5.4向IoC容器中添加自定义类的方法示例
  • php定时发送邮件
  • 房产税城镇土地使用税税源信息采集
  • 凭证字号怎么写
  • php curl代理
  • 餐厅手撕发票
  • vue面试题简书
  • 蓝桥杯b组2020
  • 小迪安全2021
  • zendframework3中文手册
  • 应收账款与主营业务收入的比率
  • 什么是技术服务工程师
  • 公司内部现金管理制度
  • 报税财务报表一定要填吗
  • 年终奖是以工资形式发放吗
  • 建筑企业增值税税率是多少
  • 进口货物的账务处理办法
  • 社保员工全额承担怎么写分录
  • mongodb数据查询
  • 职工食堂费用计入哪个科目
  • 免税农产品发票怎么抵扣申报
  • server更改密码
  • 交易性金融资产入账价值怎么计算
  • 交易性金融资产属于流动资产
  • 子公司注销前资金怎么办
  • 待处理财产损溢属于什么类科目?
  • 一般哪些企业可以保供煤炭
  • 小规模纳税人做账分录全套流程最新
  • 法人的加油费能抵所得税吗
  • 整个期间影响损耗的因素
  • 支付给职工以及为职工支付的现金增加
  • 如何设置营业费支付
  • mysql5.7.29安装
  • 重装win7系统后鼠标反应慢
  • 在Linux系统中安装镜像步骤
  • centos6 centos7区别
  • 删除文件或文件夹时出错怎么办
  • windows8触屏功能
  • 服务器不支持密码鉴定
  • unity 链表
  • node modules干嘛的
  • iphone一直让登陆icloud
  • jQuery实现Tab选项卡切换效果简单演示
  • u3d unity3d
  • jquery easyui datagrid实现增加,修改,删除方法总结
  • 上海地铁直接刷银联卡
  • 消费税增值税的区别与联系
  • 国际税收对经济活动的影响
  • 内江市税务局
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设