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连接mysql并提交mysql事务示例
Mar 05 Python
python实现红包裂变算法
Feb 16 Python
python bottle框架支持jquery ajax的RESTful风格的PUT和DELETE方法
May 24 Python
TensorFlow损失函数专题详解
Apr 26 Python
基于OpenCV python3实现证件照换背景的方法
Mar 22 Python
Django如何实现上传图片功能
Aug 16 Python
matlab中imadjust函数的作用及应用举例
Feb 27 Python
keras.utils.to_categorical和one hot格式解析
Jul 02 Python
python如何支持并发方法详解
Jul 25 Python
python利用文件时间批量重命名照片和视频
Feb 09 Python
浅析Django接口版本控制
Jun 26 Python
Github 使用python对copilot做些简单使用测试
Apr 14 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 编写大型网站问题集
2010/05/07 PHP
谷歌音乐搜索栏的提示功能php修正代码
2011/05/09 PHP
基于PHP读取csv文件内容的详解
2013/06/18 PHP
thinkphp3查询mssql数据库乱码解决方法分享
2014/02/11 PHP
实例介绍PHP中zip_open()函数用法
2019/02/15 PHP
从JavaScript的函数重名看其初始化方式
2007/03/08 Javascript
ie下动态加态js文件的方法
2011/09/13 Javascript
利用json获取字符出现次数的代码
2012/03/22 Javascript
js插件方式打开pdf文件(浏览器pdf插件分享)
2013/12/20 Javascript
两种方法基于jQuery实现IE浏览器兼容placeholder效果
2014/10/14 Javascript
JS动态修改图片的URL(src)的方法
2015/04/01 Javascript
jQuery中prepend()方法使用详解
2015/08/11 Javascript
AngularJs表单验证实例详解
2016/05/30 Javascript
ES6新数据结构Map功能与用法示例
2017/03/31 Javascript
JavaScript编写棋盘覆盖代码详解
2017/08/28 Javascript
基于Vue2的独立构建与运行时构建的差别(详解)
2017/12/06 Javascript
React为 Vue 引入容器组件和展示组件的教程详解
2018/05/03 Javascript
如何解决vue2.0下IE浏览器白屏问题
2018/09/13 Javascript
jQuery添加新内容的四个常用方法分析【append,prepend,after,before】
2019/03/19 jQuery
VUE 实现复制内容到剪贴板的两种方法
2019/04/24 Javascript
JavaScript实现移动端拖动元素
2020/11/24 Javascript
[00:10]DOTA2全国高校联赛速递
2018/05/30 DOTA
python中readline判断文件读取结束的方法
2014/11/08 Python
python批量提取word内信息
2015/08/09 Python
浅谈python中的getattr函数 hasattr函数
2016/06/14 Python
自学python的建议和周期预算
2019/01/30 Python
详解python中*号的用法
2019/10/21 Python
如何将Pycharm中调整字体大小的方式设置为"ctrl+鼠标滚轮上下滑"
2020/11/17 Python
HTML5自定义属性前缀data-及dataset的使用方法(html5 新特性)
2017/08/24 HTML / CSS
html5视频自动横过来自适应页面且点击播放功能的实现
2020/06/03 HTML / CSS
汽车装潢店创业计划书范文
2014/02/05 职场文书
党员领导干部民主生活会批评与自我批评发言
2014/09/28 职场文书
自主招生英文自荐信
2015/03/25 职场文书
感恩教师主题班会
2015/08/12 职场文书
Java使用jmeter进行压力测试
2021/07/09 Java/Android
教你使用一行Python代码玩遍童年的小游戏
2021/08/23 Python