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入门篇之编程习惯与特点
Oct 17 Python
Tensorflow简单验证码识别应用
May 25 Python
浅谈scrapy 的基本命令介绍
Jun 13 Python
python版学生管理系统
Jan 10 Python
Python 装饰器实现DRY(不重复代码)原则
Mar 05 Python
Python操作mongodb的9个步骤
Jun 04 Python
python操作excel的方法
Aug 16 Python
python 字典操作提取key,value的方法
Jun 26 Python
Tensorflow 模型转换 .pb convert to .lite实例
Feb 12 Python
python 在threading中如何处理主进程和子线程的关系
Apr 25 Python
keras读取h5文件load_weights、load代码操作
Jun 12 Python
用python写爬虫简单吗
Jul 28 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
要会喝咖啡也要会知道咖啡豆
2021/03/03 咖啡文化
据说是雅虎的一份PHP面试题附答案
2009/01/07 PHP
php微信支付之APP支付方法
2015/03/04 PHP
php中使用in_array() foreach array_search() 查找数组是否包含时的性能对比
2015/04/14 PHP
深入解析PHP的Laravel框架中的event事件操作
2016/03/21 PHP
Laravel框架自定义分页样式操作示例
2020/01/26 PHP
19个很有用的 JavaScript库推荐
2011/06/27 Javascript
让你的CSS像Jquery一样做筛选的实现方法
2011/07/10 Javascript
如何制作浮动广告 JavaScript制作浮动广告代码
2012/12/30 Javascript
jQuery获得包含margin的outerWidth和outerHeight的方法
2015/03/25 Javascript
jQuery获得字体颜色16位码的方法
2016/02/20 Javascript
论JavaScript模块化编程
2016/03/07 Javascript
JQuery 的跨域方法推荐_可跨任何网站
2016/05/18 Javascript
微信小程序 MINA文件结构
2016/10/17 Javascript
JavaScript中利用构造器函数模拟类的方法
2017/02/16 Javascript
浅谈JS获取元素的N种方法及其动静态讨论
2017/08/25 Javascript
用vue构建多页面应用的示例代码
2017/09/20 Javascript
微信小程序wx.uploadfile 本地文件转base64的实现代码
2018/06/28 Javascript
vue+axios 前端实现的常用拦截的代码示例
2018/08/23 Javascript
jQuery实现条件搜索查询、实时取值及升降序排序的方法分析
2019/05/04 jQuery
JavaScript模块管理的简单实现方式详解
2019/06/15 Javascript
[52:06]FNATIC vs NIP 2019国际邀请赛小组赛 BO2 第二场 8.16
2019/08/19 DOTA
python读写文件操作示例程序
2013/12/02 Python
Python学习小技巧之列表项的排序
2017/05/20 Python
Python函数基础实例详解【函数嵌套,命名空间,函数对象,闭包函数等】
2019/03/30 Python
python实现抠图给证件照换背景源码
2019/08/20 Python
html5时钟实现代码
2010/10/22 HTML / CSS
HTML5 层的叠加的实现
2020/07/07 HTML / CSS
德国家具在线:Fashion For Home
2017/03/11 全球购物
《草原》教学反思
2014/02/15 职场文书
应届生自荐书
2014/06/23 职场文书
承诺书模板
2014/08/30 职场文书
学校会议通知范文
2015/04/15 职场文书
小王子读书笔记
2015/06/29 职场文书
学雷锋活动简报
2015/07/20 职场文书
原生CSS实现文字无限轮播的通用方法
2021/03/30 HTML / CSS