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 输出一个两行字符的变量
Feb 05 Python
Python通过递归遍历出集合中所有元素的方法
Feb 25 Python
Python3.6笔记之将程序运行结果输出到文件的方法
Apr 22 Python
使用Python通过win32 COM打开Excel并添加Sheet的方法
May 02 Python
Python 十六进制整数与ASCii编码字符串相互转换方法
Jul 09 Python
Python使用Selenium模块模拟浏览器抓取斗鱼直播间信息示例
Jul 18 Python
利用Python查看微信共同好友功能的实现代码
Apr 24 Python
Python中请不要再用re.compile了
Jun 30 Python
Python3的socket使用方法详解
Feb 18 Python
Python xpath表达式如何实现数据处理
Jun 13 Python
在Ubuntu中安装并配置Pycharm教程的实现方法
Jan 06 Python
2021年pycharm的最新安装教程及基本使用图文详解
Apr 03 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
全国FM电台频率大全 - 16 河南省
2020/03/11 无线电
德劲1103二次变频版的打磨
2021/03/02 无线电
php实现将上传word文件转为html的方法
2015/06/03 PHP
PHP和C#可共用的可逆加密算法详解
2015/10/26 PHP
强悍无比的WEB开发好助手FireBug(Firefox Plugin)
2007/01/16 Javascript
JScript分割字符串示例代码
2013/09/04 Javascript
jquery中邮箱地址 URL网站地址正则验证实例代码
2013/09/15 Javascript
jquery判断浏览器后退时候弹出消息的方法
2014/08/11 Javascript
Jquery实现仿腾讯娱乐频道焦点图(幻灯片)特效
2015/03/06 Javascript
基于javascript实现最简单的选项卡切换效果
2016/05/16 Javascript
BootStrap Table对前台页面表格的支持实例讲解
2016/12/22 Javascript
老生常谈js-react组件生命周期
2017/05/02 Javascript
JQuery EasyUI的一些常用组件
2017/07/12 jQuery
浅谈vue-cli加载不到dev-server.js的解决办法
2017/11/24 Javascript
js的各种数据类型判断的介绍
2019/01/19 Javascript
jquery分页优化操作实例分析
2019/08/23 jQuery
Javascript实现贪吃蛇小游戏(含详细注释)
2020/10/23 Javascript
绘制微信小程序验证码功能的实例代码
2021/01/05 Javascript
python复制文件代码实现
2013/12/23 Python
pyqt5简介及安装方法介绍
2018/01/31 Python
浅谈python中requests模块导入的问题
2018/05/18 Python
Python函数装饰器常见使用方法实例详解
2019/03/30 Python
在OpenCV里使用Camshift算法的实现
2019/11/22 Python
Python实现验证码识别
2020/06/15 Python
用python读取xlsx文件
2020/12/17 Python
GLAMGLOW香港官网:明星出镜前的秘密武器
2017/03/16 全球购物
马来西亚网上购物平台:ezbuy
2018/02/13 全球购物
介绍一下Linux内核的排队自旋锁
2014/01/04 面试题
什么时候需要进行强制类型转换
2016/09/03 面试题
工作中个人的自我评价
2013/12/31 职场文书
个人求职信范例
2014/01/29 职场文书
文秘档案管理岗位职责
2014/03/06 职场文书
会计与审计专业自荐信范文
2014/03/15 职场文书
2014年入党积极分子党课学习心得体会模板
2014/04/03 职场文书
詹天佑教学反思
2014/04/30 职场文书
触电现场处置方案
2014/05/14 职场文书