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实现探测socket和web服务示例
Mar 28 Python
Python3基础之基本数据类型概述
Aug 13 Python
收集的几个Python小技巧分享
Nov 22 Python
Python Selenium Cookie 绕过验证码实现登录示例代码
Apr 10 Python
使用pandas批量处理矢量化字符串的实例讲解
Jul 10 Python
python中单例常用的几种实现方法总结
Oct 13 Python
Python3自动签到 定时任务 判断节假日的实例
Nov 13 Python
详解python持久化文件读写
Apr 06 Python
Python3监控疫情的完整代码
Feb 20 Python
python3+opencv 使用灰度直方图来判断图片的亮暗操作
Jun 02 Python
快速了解Python开发环境Spyder
Jun 29 Python
Python pymysql模块安装并操作过程解析
Oct 13 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 编程的 5个良好习惯
2009/02/20 PHP
从手册去理解分析PHP session机制
2011/07/17 PHP
PHP 使用pcntl和libevent 实现Timer功能
2013/10/27 PHP
使用PHP实现微信摇一摇周边红包
2016/01/04 PHP
ModelDialog JavaScript模态对话框类代码
2011/04/17 Javascript
从jQuery.camelCase()学习string.replace() 函数学习
2011/09/13 Javascript
Javascript中自动切换焦点实现代码
2012/12/15 Javascript
js 取时间差去掉周六周日实现代码
2012/12/25 Javascript
js获取select选中的option的text示例代码
2013/12/19 Javascript
浅谈JavaScript中的字符编码转换问题
2015/07/07 Javascript
JSON键值对序列化和反序列化解析
2017/01/24 Javascript
JavaScript中的普通函数和箭头函数的区别和用法详解
2017/03/21 Javascript
浅谈js使用in和hasOwnProperty获取对象属性的区别
2017/04/27 Javascript
使用ajax的post同步执行(实现方法)
2017/12/21 Javascript
JavaScript模块管理的简单实现方式详解
2019/06/15 Javascript
JS中自定义事件的使用与触发操作实例分析
2019/11/01 Javascript
JS实现手风琴特效
2020/11/08 Javascript
python实现的解析crontab配置文件代码
2014/06/30 Python
详解Python中__str__和__repr__方法的区别
2015/04/17 Python
Phantomjs抓取渲染JS后的网页(Python代码)
2016/05/13 Python
python实现自动登录
2018/09/17 Python
Python 带有参数的装饰器实例代码详解
2018/12/06 Python
浅谈python下含中文字符串正则表达式的编码问题
2018/12/07 Python
python实现对输入的密文加密
2019/03/20 Python
python 使用plt画图,去除图片四周的白边方法
2019/07/09 Python
Python 实用技巧之利用Shell通配符做字符串匹配
2019/08/23 Python
Pycharm+Python+PyQt5使用详解
2019/09/25 Python
wxPython多个窗口的基本结构
2019/11/19 Python
python实现俄罗斯方块小游戏
2020/04/24 Python
宣传活动总结范文
2014/07/01 职场文书
自我介绍演讲稿范文
2014/08/21 职场文书
食品药品安全责任书
2015/05/11 职场文书
太行山上观后感
2015/06/05 职场文书
导游词之山东孔庙
2019/11/04 职场文书
pandas数值排序的实现实例
2021/07/25 Python
vue实现拖拽交换位置
2022/04/07 Vue.js