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 相关文章推荐
400多行Python代码实现了一个FTP服务器
May 10 Python
python基于隐马尔可夫模型实现中文拼音输入
Apr 01 Python
python中通过预先编译正则表达式提高效率
Sep 25 Python
python交互式图形编程实例(一)
Nov 17 Python
使用python的pandas库读取csv文件保存至mysql数据库
Aug 20 Python
详解爬虫被封的问题
Apr 23 Python
TensorBoard 计算图的查看方式
Feb 15 Python
Python 定义只读属性的实现方式
Mar 05 Python
Python 跨.py文件调用自定义函数说明
Jun 01 Python
python + selenium 刷B站播放量的实例代码
Jun 12 Python
Python Celery异步任务队列使用方法解析
Aug 10 Python
利用Python实现最小二乘法与梯度下降算法
Feb 21 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/06/09 PHP
数组与类使用PHP的可变变量名需要的注意的问题
2013/06/20 PHP
laravel 查询数据库获取结果实现判断是否为空
2019/10/24 PHP
CSDN轮换广告图片轮换效果
2007/03/27 Javascript
javascript实现点击按钮让DIV层弹性移动的方法
2015/02/24 Javascript
js实现的页面矩阵图形变换特效
2016/01/26 Javascript
jquery判断对象是否为空并遍历对象的简单实例
2016/07/26 Javascript
json定义及jquery操作json的方法
2016/10/03 Javascript
jquery文字填写自动高度的实现方法
2016/11/07 Javascript
angularJS 发起$http.post和$http.get请求的实现方法
2017/05/18 Javascript
jQuery表单验证之密码确认
2017/05/22 jQuery
Express系列之multer上传的使用
2017/10/27 Javascript
Angular2.0实现modal对话框的方法示例
2018/02/18 Javascript
webpack4的迁移的使用方法
2018/05/25 Javascript
ES7之Async/await的使用详解
2019/03/28 Javascript
ES6知识点整理之对象解构赋值应用示例
2019/04/17 Javascript
vue实现微信分享链接添加动态参数的方法
2019/04/29 Javascript
基于JavaScript 实现拖放功能
2019/09/12 Javascript
JS在Array数组中按指定位置删除或添加元素对象方法示例
2019/11/19 Javascript
通过微信公众平台获取公众号文章的方法示例
2019/12/25 Javascript
ant-design-vue按需加载的坑的解决
2020/05/14 Javascript
Python3基础之list列表实例解析
2014/08/13 Python
利用Django提供的ModelForm增删改数据的方法
2019/01/06 Python
Python基础知识点 初识Python.md
2019/05/14 Python
Python爬虫 scrapy框架爬取某招聘网存入mongodb解析
2019/07/31 Python
python多线程同步之文件读写控制
2021/02/25 Python
html5利用canvas绘画二级树形结构图的示例
2017/09/27 HTML / CSS
英国足球店:UK Soccer Shop
2017/11/19 全球购物
建筑总经理岗位职责
2014/02/02 职场文书
《猴子种果树》教学反思
2014/04/26 职场文书
培训通知
2015/04/17 职场文书
2015年英语教学工作总结
2015/05/25 职场文书
Redis主从配置和底层实现原理解析(实战记录)
2021/06/30 Redis
mongoDB数据库索引快速入门指南
2022/03/23 MongoDB
Spring Boot项目传参校验的最佳实践指南
2022/04/05 Java/Android
浅谈MySql update会锁定哪些范围的数据
2022/06/25 MySQL