Python Multiprocessing多进程 使用tqdm显示进度条的实现

作者:SiyuanChen 时间:2021-04-03 19:15:08 

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显示进度条的实现

来源:https://www.cnblogs.com/siyuan1998/p/11246792.html

标签:python,multiprocessing,多进程,tqdm,进度条
0
投稿

猜你喜欢

  • 一个ACCESS数据库数据传递的方法

    2008-03-05 11:58:00
  • Python聊天室带界面实现的示例代码(tkinter,Mysql,Treading,socket)

    2024-01-23 21:46:07
  • sql server 常用的几个数据类型

    2024-01-14 16:39:34
  • 微信支付的开发流程详解

    2023-09-07 08:54:45
  • Mysql中explain的使用详解

    2009-12-08 16:18:00
  • GO语言的IO方法实例小结

    2023-09-17 08:47:24
  • MySQL数据库的触发器和事务

    2024-01-15 21:35:08
  • python中if嵌套命令实例讲解

    2022-03-11 21:52:51
  • 3个 Python 编程技巧

    2023-11-30 08:05:19
  • OpenCV-PS扩散毛玻璃效果的实现代码

    2022-03-17 22:45:52
  • web 2.0设计指导之一:简单[译]

    2008-10-12 09:37:00
  • django中模板的html自动转意方法

    2023-06-28 15:33:49
  • python 百度aip实现文字识别的实现示例

    2023-12-15 19:53:47
  • 2021年的Python 时间轴和即将推出的功能详解

    2023-07-14 22:32:04
  • 在ASP中使用Oracle数据库技巧

    2008-05-17 11:47:00
  • Kettle下载安装pdi-ce-7.1.0.0-12教程

    2023-11-27 05:38:36
  • Python读取word文本操作详解

    2023-08-23 15:32:50
  • 使用Python轻松完成垃圾分类(基于图像识别)

    2023-06-24 06:06:47
  • mybatis统计每条SQL的执行时间的方法示例

    2024-01-28 12:54:43
  • JS基于开关思想实现的数组去重功能【案例】

    2024-04-17 10:31:02
  • asp之家 网络编程 m.aspxhome.com