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编写暴力破解FTP密码小工具
Nov 19 Python
python中itertools模块zip_longest函数详解
Jun 12 Python
Python模拟浏览器上传文件脚本的方法(Multipart/form-data格式)
Oct 22 Python
Python线性拟合实现函数与用法示例
Dec 13 Python
python基于plotly实现画饼状图代码实例
Dec 16 Python
python 串口读取+存储+输出处理实例
Dec 26 Python
pytorch实现线性拟合方式
Jan 15 Python
Python Django中的STATIC_URL 设置和使用方式
Mar 27 Python
DjangoWeb使用Datatable进行后端分页的实现
May 18 Python
Pandas中DataFrame交换列顺序的方法实现
Dec 14 Python
使用pytorch实现线性回归
Apr 11 Python
浏览器常用基本操作之python3+selenium4自动化测试(基础篇3)
May 21 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
php 无限级分类学习参考之对ecshop无限级分类的解析 带详细注释
2010/03/23 PHP
PDO版本问题 Invalid parameter number: no parameters were bound
2013/01/06 PHP
PHP更新购物车数量(表单部分/PHP处理部分)
2013/05/03 PHP
php递归实现无限分类的方法
2015/07/28 PHP
Yii2处理密码加密及验证的方法
2019/05/12 PHP
Add a Formatted Table to a Word Document
2007/06/15 Javascript
070823更新的一个[消息提示框]组件 兼容ie7
2007/08/29 Javascript
JS 学习笔记 防止发生命名冲突
2009/07/30 Javascript
jquery使用经验小结
2015/05/20 Javascript
jquery实现模拟百分比进度条渐变效果代码
2015/10/29 Javascript
15款最好的Bootstrap在线编辑器
2016/08/03 Javascript
谈谈JavaScript的New关键字
2016/08/26 Javascript
jQuery tagsinput在h5邮件客户端中应用详解
2016/09/26 Javascript
通过jsonp获取json数据实现AJAX跨域请求
2017/01/22 Javascript
从零学习node.js之文件操作(三)
2017/02/21 Javascript
微信小程序js文件改变参数并在视图上及时更新【推荐】
2018/06/11 Javascript
Vue开发环境中修改端口号的实现方法
2019/08/15 Javascript
layui 对弹窗 form表单赋值的实现方法
2019/09/04 Javascript
修改layui的后台模板的左侧导航栏可以伸缩的方法
2019/09/10 Javascript
基于Vue sessionStorage实现保留搜索框搜索内容
2020/06/01 Javascript
uni-app 自定义底部导航栏的实现
2020/12/11 Javascript
Python中用于返回绝对值的abs()方法
2015/05/14 Python
django 修改server端口号的方法
2018/05/14 Python
在mac下查找python包存放路径site-packages的实现方法
2018/11/06 Python
tensorflow estimator 使用hook实现finetune方式
2020/01/21 Python
英文简历中的自荐信范文
2013/12/14 职场文书
王老吉广告词
2014/03/20 职场文书
小学阳光体育活动总结
2014/07/05 职场文书
2014县政府领导班子三严三实对照检查材料思想汇报
2014/09/26 职场文书
2014年学生会干事工作总结
2014/11/07 职场文书
师德标兵先进事迹材料
2014/12/19 职场文书
第一书记观后感
2015/06/08 职场文书
欢送领导祝酒词
2015/08/12 职场文书
《风不能把阳光打败》读后感3篇
2020/01/06 职场文书
python前后端自定义分页器
2022/04/13 Python
redis protocol通信协议及使用详解
2022/07/15 Redis