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

如何在多进程循环中为URL列表添加tqdm进度条?

适配多进程URL列表的tqdm进度条实现

直接修改你的代码,通过apply_async的回调函数实现进度条更新,核心是把进度条总长度设为URL列表的长度,每个任务完成后触发进度条更新:

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

# 假设你的worker函数和队列q已定义
def worker(url, q):
    # 这里写你的URL处理逻辑
    pass

if __name__ == "__main__":
    dataset = "你的数据集路径.csv"
    q = Queue()
    urls = pd.read_csv(dataset, header=None).to_numpy().flatten()

    # 初始化进度条,总任务数为URL列表的长度
    pbar = tqdm(total=len(urls))

    # 定义进度条更新回调函数
    def update(*_):
        pbar.update(1)

    pool = Pool()
    jobs = []
    for url in urls:
        # 提交任务时绑定回调函数,任务完成后自动更新进度
        job = pool.apply_async(worker, args=(url, q), callback=update)
        jobs.append(job)

    # 等待所有任务完成
    for job in jobs:
        job.get()

    pool.close()
    pool.join()
    # 关闭进度条
    pbar.close()

关键说明:

  • 进度条的total参数直接使用len(urls),精准对应要处理的URL总数
  • 给每个apply_async任务添加callback=update参数,每当一个worker任务执行完毕,就会调用update函数让进度条前进1格
  • 保留你原有的job.get()和pool管理逻辑,确保所有任务正常执行完成
  • 最后调用pbar.close()保证进度条输出格式整洁

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 06:35:45