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

 更新时间:2019年08月13日 14:19:43   转载 作者:SiyuanChen  
这篇文章主要介绍了Python Multiprocessing多进程 使用tqdm显示进度条的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

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 加速前

mutiprocess 加速后

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • Python实现查找字符串数组最长公共前缀示例

    Python实现查找字符串数组最长公共前缀示例

    这篇文章主要介绍了Python实现查找字符串数组最长公共前缀,涉及Python针对字符串的遍历、判断、计算等相关操作技巧,需要的朋友可以参考下
    2019-03-03
  • Python验证文件是否可读写代码分享

    Python验证文件是否可读写代码分享

    这篇文章主要介绍了Python验证文件是否可读写代码分享,具有一定借鉴价值,需要的朋友可以参考下。
    2017-12-12
  • Python基于多线程操作数据库相关问题分析

    Python基于多线程操作数据库相关问题分析

    这篇文章主要介绍了Python基于多线程操作数据库相关问题,结合实例形式分析了Python使用数据库连接池并发操作数据库避免超时、连接丢失相关实现技巧,需要的朋友可以参考下
    2018-07-07
  • django框架自定义用户表操作示例

    django框架自定义用户表操作示例

    这篇文章主要介绍了django框架自定义用户表操作,结合实例形式分析了Django框架自定义用户表替换自带的user表具体操作步骤与相关使用技巧,需要的朋友可以参考下
    2018-08-08
  • Python模拟简单电梯调度算法示例

    Python模拟简单电梯调度算法示例

    这篇文章主要介绍了Python模拟简单电梯调度算法,涉及Python线程、队列、时间延迟等相关操作技巧,需要的朋友可以参考下
    2018-08-08
  • python实现一组典型数据格式转换

    python实现一组典型数据格式转换

    这篇文章主要为大家详细介绍了python实现一组典型数据格式转换,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-12-12
  • Python:type、object、class与内置类型实例

    Python:type、object、class与内置类型实例

    今天小编就为大家分享一篇Python:type、object、class与内置类型实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-12-12
  • Python实现基于SVM的分类器的方法

    Python实现基于SVM的分类器的方法

    这篇文章主要介绍了Python实现基于SVM的分类器的方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-07-07
  • python开发之函数定义实例分析

    python开发之函数定义实例分析

    这篇文章主要介绍了python开发之函数定义方法,以实例形式较为详细的分析了Python中函数的定义与使用技巧,需要的朋友可以参考下
    2015-11-11
  • 基于Python的ModbusTCP客户端实现详解

    基于Python的ModbusTCP客户端实现详解

    这篇文章主要介绍了基于Python的ModbusTCP客户端实现详解,Modbus Poll和Modbus Slave是两款非常流行的Modbus设备仿真软件,支持Modbus RTU/ASCII和Modbus TCP/IP协议 ,经常用于测试和调试Modbus设备,观察Modbus通信过程中的各种报文,需要的朋友可以参考下
    2019-07-07

最新评论