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标准库之sqlite3使用实例
Nov 25 Python
如何在Python中编写并发程序
Feb 27 Python
详谈Python基础之内置函数和递归
Jun 21 Python
Python中的错误和异常处理简单操作示例【try-except用法】
Jul 25 Python
Python实现曲线点抽稀算法的示例
Oct 12 Python
在Python中实现替换字符串中的子串的示例
Oct 31 Python
celery4+django2定时任务的实现代码
Dec 23 Python
在pycharm中设置显示行数的方法
Jan 16 Python
python实现图片压缩代码实例
Aug 12 Python
修改 CentOS 6.x 上默认Python的方法
Sep 06 Python
pip install 使用国内镜像的方法示例
Apr 03 Python
python爬虫构建代理ip池抓取数据库的示例代码
Sep 22 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
MySQL修改密码方法总结
2008/03/25 PHP
PHP中10个不常见却非常有用的函数
2010/03/21 PHP
rephactor 优秀的PHP的重构工具
2011/06/09 PHP
PHP中file_exists使用中遇到的问题小结
2016/04/05 PHP
php使用PDO执行SQL语句的方法分析
2017/02/16 PHP
js数字输入框(包括最大值最小值限制和四舍五入)
2009/11/24 Javascript
jquery获取input表单值的代码
2010/04/19 Javascript
js中数组Array的一些常用方法总结
2013/08/12 Javascript
jQuery中RadioButtonList的功能及用法实例介绍
2013/08/23 Javascript
JS常用正则表达式总结
2013/11/12 Javascript
document.forms用法示例介绍
2014/06/26 Javascript
jQuery简单实现QQ空间点赞已经取消点赞
2015/04/02 Javascript
scroll事件实现监控滚动条并分页显示(zepto.js)
2016/12/18 Javascript
angular2系列之路由转场动画的示例代码
2017/11/09 Javascript
Angular 项目实现国际化的方法
2018/01/08 Javascript
Node.js使用cookie保持登录的方法
2018/05/11 Javascript
如何用input标签和jquery实现多图片的上传和回显功能
2018/05/16 jQuery
angular2实现统一的http请求头方法
2018/08/13 Javascript
JS数组Object.keys()方法的使用示例
2019/06/05 Javascript
vue实现codemirror代码编辑器中的SQL代码格式化功能
2019/08/27 Javascript
基于Electron实现桌面应用开发代码实例
2020/07/07 Javascript
在antd Table中插入可编辑的单元格实例
2020/10/28 Javascript
[47:03]完美世界DOTA2联赛PWL S3 Galaxy Racer vs Phoenix 第二场 12.10
2020/12/13 DOTA
python中的decimal类型转换实例详解
2019/06/26 Python
python实现布隆过滤器及原理解析
2019/12/08 Python
如何让IE9以下版本(ie6/7/8)认识html5元素
2013/04/01 HTML / CSS
Free People中国官网:波西米亚风格女装服饰
2016/08/30 全球购物
英国领先的高街书籍专家:Waterstones
2018/02/01 全球购物
美国户外运动商店:Sun & Ski
2018/08/23 全球购物
.NET初级开发工程师面试题
2014/04/18 面试题
西安夏日科技有限公司Java笔试题
2013/01/11 面试题
党校学习自我鉴定
2014/02/24 职场文书
仓库规划计划书
2014/04/28 职场文书
慈善晚会策划方案
2014/05/14 职场文书
政协委员个人总结
2015/03/03 职场文书
Python OpenCV快速入门教程
2021/04/17 Python