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 continue语句用法实例
Mar 11 Python
Python中的index()方法使用教程
May 18 Python
Python使用redis pool的一种单例实现方式
Apr 16 Python
Python多进程并发与多线程并发编程实例总结
Feb 08 Python
python实现画一颗树和一片森林
Jun 25 Python
详解Python字符串切片
May 20 Python
浅谈tensorflow中Dataset图片的批量读取及维度的操作详解
Jan 20 Python
Python如何实现远程方法调用
Aug 07 Python
Python应用自动化部署工具Fabric原理及使用解析
Nov 30 Python
Python 类,对象,数据分类,函数参数传递详解
Sep 25 Python
Python中异常处理用法
Nov 27 Python
python语言中pandas字符串分割str.split()函数
Aug 05 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准确取得服务器IP地址的方法
2015/06/02 PHP
3种方法轻松处理php开发中emoji表情的问题
2016/07/18 PHP
PHP getNamespaces()函数讲解
2019/02/03 PHP
JavaScipt基本教程之前言
2008/01/16 Javascript
ExtJS 2.2.1的grid控件在ie6中的显示问题
2009/05/04 Javascript
Js与下拉列表处理问题解决
2014/02/13 Javascript
JavaScript操作Oracle数据库示例
2015/03/06 Javascript
jQuery实现的漂亮表单效果代码
2015/08/18 Javascript
简单谈谈JavaScript的同步与异步
2015/12/31 Javascript
ionic 上拉菜单(ActionSheet)实例代码
2016/06/06 Javascript
原生js实现addclass,removeclass,toggleclasss实例
2016/11/24 Javascript
详解nodejs微信公众号开发——5.素材管理接口
2017/04/11 NodeJs
jquery一键控制checkbox全选、反选或全不选
2017/10/16 jQuery
Vue异步加载about组件
2017/10/31 Javascript
JS实现仿微信支付弹窗功能
2018/06/25 Javascript
微信小程序 数据缓存实现方法详解
2019/08/26 Javascript
typescript配置alias的详细步骤
2020/08/12 Javascript
Python中的类与对象之描述符详解
2015/03/27 Python
python统计字符串中指定字符出现次数的方法
2015/04/04 Python
利用python发送和接收邮件
2016/09/27 Python
Python实用技巧之利用元组代替字典并为元组元素命名
2018/07/11 Python
用Python配平化学方程式的方法
2019/07/20 Python
python word转pdf代码实例
2019/08/16 Python
在pytorch中查看可训练参数的例子
2019/08/18 Python
python 有效的括号的实现代码示例
2019/11/11 Python
python数值基础知识浅析
2019/11/19 Python
Python基于requests实现模拟上传文件
2020/04/21 Python
Spartoo西班牙官网:法国时尚购物网站
2018/03/27 全球购物
组织关系转移介绍信
2014/01/16 职场文书
大学生应聘导游自荐信
2014/06/02 职场文书
党政领导班子四风问题对照检查材料思想汇报
2014/10/02 职场文书
校园环境卫生倡议书
2015/04/29 职场文书
详解用Python把PDF转为Word方法总结
2021/04/27 Python
Python中Cookies导出某站用户数据的方法
2021/05/17 Python
mysql主从复制的实现步骤
2021/10/24 MySQL
关于JS中的作用域中的问题思考分享
2022/04/06 Javascript