You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python 3.8并行填充DataFrame时如何显示执行进度条

并行填充DataFrame时添加进度条实现方案

使用multiprocessing.Pool执行并行计算任务时完全可以显示实时进度条,直接借助tqdm库即可实现,几乎不需要改动原有并行逻辑。

实现步骤

  1. 先安装依赖(已安装可跳过):
    pip install tqdm
    
  2. 核心逻辑是:imap_unordered返回的是惰性可迭代对象,每完成一个子任务就会吐出一个结果,用tqdm包裹这个可迭代对象、手动传入总任务数,就能在每收到一个完成结果时自动更新进度。

修改后的可直接运行代码

import pandas as pd
from multiprocessing import Pool
from tqdm import tqdm

if __name__ == '__main__':
    my_pool = Pool(10)
    # 传入total参数指定总任务量,desc自定义进度条前缀文字
    task_iter = my_pool.imap_unordered(parallelize_dataframe, range(0, len(dates)))
    Data = pd.concat(tqdm(task_iter, total=len(dates), desc="DataFrame并行填充进度"))
    my_pool.close()
    my_pool.join()

注意事项

  • 不要为了省事改用Pool.map方法:map会等待所有子任务全部执行完成后才一次性返回全部结果,无法实现单任务粒度的实时进度更新,只有imap/imap_unordered这类逐任务返回结果的接口才能驱动进度条正常刷新。
  • 如果单任务执行速度极快、进度条刷新过于频繁,可以给tqdm加mininterval=0.5参数,限制进度条每0.5秒最多刷新一次,减少不必要的终端IO消耗。
  • 如果是在Jupyter Notebook环境下运行,把导入语句替换为from tqdm.notebook import tqdm,就能显示适配Notebook界面的交互式进度条,其余逻辑不需要改动。

内容的提问来源于stack exchange,提问作者Stephen Ge

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.28 13:12:18