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冒泡排序算法的实现代码
Nov 21 Python
Python新手们容易犯的几个错误总结
Apr 01 Python
python flask 多对多表查询功能
Jun 25 Python
R语言 vs Python对比:数据分析哪家强?
Nov 17 Python
python机器学习理论与实战(五)支持向量机
Jan 19 Python
基于Django用户认证系统详解
Feb 21 Python
python将秒数转化为时间格式的实例
Sep 16 Python
python实现两个一维列表合并成一个二维列表
Dec 02 Python
python 解决flask uwsgi 获取不到全局变量的问题
Dec 22 Python
python PyAUtoGUI库实现自动化控制鼠标键盘
Sep 09 Python
Opencv+Python识别PCB板图片的步骤
Jan 07 Python
python os.listdir()乱码解决方案
Jan 31 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定时执行计划任务的多种方法小结
2011/12/19 PHP
PHP扩展框架之Yaf框架的安装与使用
2016/05/18 PHP
php 静态属性和静态方法区别详解
2017/04/09 PHP
Yii框架 session 数据库存储操作方法示例
2019/11/18 PHP
Swoole源码中如何查询Websocket的连接问题详解
2020/08/30 PHP
页面只能打开一次Cooike如何实现
2012/12/04 Javascript
jQuery插件开发基础简单介绍
2013/01/07 Javascript
有关Promises异步问题详解
2015/11/13 Javascript
JS实现alert中显示换行的方法
2015/12/17 Javascript
JS Array.slice 截取数组的实现方法
2016/01/02 Javascript
深入理解Node.js的HTTP模块
2016/10/12 Javascript
Vuejs 组件——props数据传递的实例代码
2017/03/07 Javascript
Vue实现动态响应数据变化
2017/04/28 Javascript
vue的mixins属性详解
2018/03/14 Javascript
vue-cli 引入、配置axios的方法
2018/05/08 Javascript
解决layui的radio属性或别的属性没显示出来的问题
2019/09/26 Javascript
JavaScript单线程和任务队列原理解析
2020/02/04 Javascript
python字符串的常用操作方法小结
2016/05/21 Python
对Python3使运行暂停的方法详解
2019/02/18 Python
Python一个简单的通信程序(客户端 服务器)
2019/03/06 Python
Pytorch.nn.conv2d 过程验证方式(单,多通道卷积过程)
2020/01/03 Python
tensorflow使用CNN分析mnist手写体数字数据集
2020/06/17 Python
python 利用toapi库自动生成api
2020/10/19 Python
英国最大的电子产品和家电零售企业:Currys PC World
2016/09/24 全球购物
德国在线订购鲜花:Fleurop
2018/08/25 全球购物
奥地利体育网上商店:Gigasport
2019/10/09 全球购物
ruby如何进行集成操作?Ruby能进行多重继承吗?
2013/10/16 面试题
校园招聘策划书
2014/01/09 职场文书
厂办主管岗位职责范本
2014/02/28 职场文书
土建施工员岗位职责
2014/07/16 职场文书
网上祭先烈心得体会
2014/09/01 职场文书
2014年质量管理工作总结
2014/12/01 职场文书
幼儿园春季开学通知
2015/07/16 职场文书
Python 多线程之threading 模块的使用
2021/04/14 Python
Python中for后接else的语法使用
2021/05/18 Python
Spring中bean的生命周期之getSingleton方法
2021/06/30 Java/Android