Python多进程加速:结合pathos与tqdm实现进度条监控

Theo
Theo
发布时间:2026-10-13| 4人浏览过
原创

本文介绍如何在Python中利用pathos.multiprocessing库结合tqdm实现多进程并行计算及进度条显示。针对标准multiprocessing库仅支持单参数输入的局限,pathos可处理多参数函数。通过示例展示了如何定义迭代函数、配置超参数数组,并监控进程执行进度,有效加速高复杂度计算任务。

背景与需求

1.背景

当Python运行计算复杂度较高的函数时,若服务器单核CPU处理能力有限,耗时往往较长。此时,利用多核CPU进行多进程并行处理是提升运行速度的有效手段。

库的选择与安装

2.函数要求

本文采用的方案是使用pathos.multiprocessing库进行多进程处理,并配合tqdm库显示进度条。安装这两个库的方法如下:


pip install pathos

安装完成后,即可进行后续配置。


from pathos.multiprocessing import ProcessingPool as Pool
from tqdm import tqdm

选择pathos库的主要原因在于,Python标准库中的multiprocessing.Pool函数仅支持单参数输入(例如f(x) = x**2),无法直接处理如f(x, y) = x+y这类需要多个参数的函数。

对于包含默认参数或额外参数的函数,例如F(x, alpha=0.5, gamma=0.1),标准库的处理更为受限,而pathos能更好地支持此类场景。

代码实现细节

3.代码实现

首先定义一个函数F[X],其中输入X是一个可以在第一维度上进行迭代的数组,其形状为[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

函数F的输出x是一个字典(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.结果分析

未使用multiprocess加速前的运行时间表现如下:

使用multiprocess加速后的运行时间表现如下:

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

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。