Python Multiprocessing多进程 使用tqdm显示进度条的实现


Posted in Python onAugust 13, 2019

1.背景

在python运行一些,计算复杂度比较高的函数时,服务器端单核CPU的情况比较耗时,因此需要多CPU使用多进程加快速度

2.函数要求

笔者使用的是:pathos.multiprocessing 库,进度条显示用tqdm库,安装方法:

pip install pathos

安装完成后

from pathos.multiprocessing import ProcessingPool as Pool
from tqdm import tqdm

这边使用pathos的原因是因为,multiprocessing 库中的Pool 函数只支持单参数输入,例如 f(x) = x**2,而不能处理 f (x,y) = x+y 这类的函数

更不用说一些需要参数的函数 例如:F(x , alpha=0.5, gamma = 0.1) 这样。

3.代码

定义一个 函数 F [ X ] ,其中,输入X是可以在第一个维度上迭代的array, 大小:[ num_X, len ] , 在第一维度 num_X 上进行迭代。

def F(X,lamda=10,weight=0.05):
  res={} 
  res.update(F_1(X,lamda=lamda,weight=weight))
  res.update(F_2(X,lamda=lamda,weight=weight))
  return res

x 是 F 的输出,是一个dict (字典格式)

这里的两个函数超参数 lamda 和 weight 虽然每次调用的时候值是一样的,但是还是需要放一个数组每次用于迭代。

zip_lamda = [lamda for i in range(len(X)) ]
zip_weight = [weight for i in range(len(X)) ]
with tqdm(total=len(cold_sequences)) as t:
    for i, x in enumerate(pool.imap(F,X,zip_lamda,zip_weight)):
      X[i,:] = [x[key] for key in x.keys()]
      Y[i,] = 0
      t.update()
  pool.close()
  pool.join()

4.结果

mutiprocess 加速前

Python Multiprocessing多进程 使用tqdm显示进度条的实现

mutiprocess 加速后

Python Multiprocessing多进程 使用tqdm显示进度条的实现

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
在Python编程过程中用单元测试法调试代码的介绍
Apr 02 Python
python和bash统计CPU利用率的方法
Jul 10 Python
python字符串对其居中显示的方法
Jul 11 Python
Python对文件操作知识汇总
May 15 Python
python 写入csv乱码问题解决方法
Oct 23 Python
详解Python list 与 NumPy.ndarry 切片之间的对比
Jul 24 Python
Python实现读取txt文件并画三维图简单代码示例
Dec 09 Python
详谈Python3 操作系统与路径 模块(os / os.path / pathlib)
Apr 26 Python
手动安装python3.6的操作过程详解
Jan 13 Python
Python线程条件变量Condition原理解析
Jan 20 Python
pycharm 中mark directory as exclude的用法详解
Feb 14 Python
一文带你掌握Pyecharts地理数据可视化的方法
Feb 06 Python
python如何将多个PDF进行合并
Aug 13 #Python
python批量读取文件名并写入txt文件中
Sep 05 #Python
Flask框架实现的前端RSA加密与后端Python解密功能详解
Aug 13 #Python
Python学习笔记之列表推导式实例分析
Aug 13 #Python
Django中create和save方法的不同
Aug 13 #Python
Python学习笔记之函数的定义和作用域实例详解
Aug 13 #Python
Python爬取智联招聘数据分析师岗位相关信息的方法
Aug 13 #Python
You might like
计算2000年01月01日起到指定日的天数
2006/10/09 PHP
PHP数组传递是值传递而非引用传递概念纠正
2013/01/31 PHP
PHP 自定义错误处理函数的使用详解
2013/05/10 PHP
PHP开发框架kohana中处理ajax请求的例子
2014/07/14 PHP
destoon供应信息title调用出公司名称的方法
2014/08/22 PHP
Javascript实例教程(19) 使用HoTMetal(7)
2006/12/23 Javascript
用正则xmlHttp实现的偷(转)
2007/01/22 Javascript
nodejs的require模块(文件模块/核心模块)及路径介绍
2013/01/14 NodeJs
jQuery实现的类似淘宝网站搜索框样式代码分享
2015/08/24 Javascript
Eclipse引入jquery报错如何解决
2015/12/01 Javascript
详解jQuery中的empty、remove和detach
2016/04/11 Javascript
js 获取站点应用名的简单实例
2016/08/18 Javascript
AngularJs表单验证实例代码解析
2016/11/29 Javascript
nodejs进阶(6)—连接MySQL数据库示例
2017/01/07 NodeJs
基于代数方程库Algebra.js解二元一次方程功能示例
2017/06/09 Javascript
vue2.0 自定义组件的方法(vue组件的封装)
2018/06/05 Javascript
vue组件挂载到全局方法的示例代码
2018/08/02 Javascript
VUE+Element环境搭建与安装的方法步骤
2019/01/24 Javascript
解决小程序无法触发SESSION问题
2020/02/03 Javascript
微信小程序实现canvas分享朋友圈海报
2020/06/21 Javascript
vue+springboot+element+vue-resource实现文件上传教程
2020/10/21 Javascript
js实现类选择器和name属性选择器的示例步骤
2021/02/07 Javascript
python3用PyPDF2解析pdf文件,用正则匹配数据方式
2020/05/12 Python
python自动生成sql语句的脚本
2021/02/24 Python
Pytorch - TORCH.NN.INIT 参数初始化的操作
2021/02/27 Python
网页中的电话号码如何实现一键直呼效果_附示例
2016/03/15 HTML / CSS
Html5 FileReader实现即时上传图片功能实例代码
2014/09/01 HTML / CSS
美国顶级户外凉鞋品牌:Chacos
2017/03/27 全球购物
高中生的学习总结自我鉴定
2013/10/26 职场文书
拉丁舞学习者的自我评价
2013/10/27 职场文书
学生实习介绍信
2014/01/15 职场文书
企业员工培训感言
2014/02/26 职场文书
矿泉水广告词
2014/03/20 职场文书
法律专业求职信
2014/05/24 职场文书
企业宣传语大全
2015/07/13 职场文书
PHP新手指南
2021/04/01 PHP