Python Multiprocessing多进程 使用tqdm显示进度条的实现
2019-08-13 14:19
5170 查看
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 Multiprocessing 多进程,使用多核CPU计算 并使用tqdm显示进度条
- Python使用multiprocessing实现一个最简单的分布式作业调度系统
- python多进程multiprocessing的简单使用
- python实现socket上传下载文件-进度条显示
- python实现多进程_multiprocessing
- 用tqdm实现代码显示进度条-python
- Python进程间通信,使用multiprocessing.connection的Listener和Client实现
- 使用WebUploader实现文件批量上传,进度条显示功能
- python-tqdm进度条的使用
- 在python中实现生产者和消费者的例子(一):使用multiprocessing和pipe()
- Python中使用多进程来实现并行处理的方法小结
- Python的multiprocessing 实现多cpu 多进程
- Python使用tkinter库实现文本显示用户输入功能示例
- Python多进程之multiprocessing模块和进程池的实现
- python中urllib.urlretrieve()实现进度条显示效果
- python之Tqdm库实现进度条功能
- python实现文件下载(包含进度条显示,文件大小显示,下载速度显示)
- Python使用multiprocessing实现一个最简单的分布式作业调度系统
- Python使用multiprocessing实现一个最简单的分布式作业调度系统
- Python多进程multiprocessing使用示例