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

如何评估Python Pandas中向量化任务的进度?寻求简易方案

追踪Pandas向量化任务进度的简易方法

不用tqdm的话,有两个简单实用的方案,可以兼顾向量化的执行效率和进度追踪:

方案一:分块处理+进度打印

将大DataFrame拆分成若干小块,每完成一块的向量化处理就打印进度。这种方式既保留了向量化的执行效率,又能通过块级进度掌握整体任务状态:

chunk_size = 100000  # 根据内存容量和任务复杂度调整块大小
total_chunks = len(df) // chunk_size + 1

for chunk_idx in range(total_chunks):
    start = chunk_idx * chunk_size
    end = min((chunk_idx + 1) * chunk_size, len(df))
    # 对当前块执行向量化处理
    df.loc[start:end-1, 'B'] = df.loc[start:end-1, 'A'].apply(a_function)
    # 打印当前进度
    print(f"进度:{chunk_idx+1}/{total_chunks} 块完成,累计处理 {end} 行")

方案二:给自定义函数加计数器

给你要执行的a_function套一层计数逻辑,每处理一定行数就打印进度。单进程场景下实现简单,能看到细粒度的行数进度:

process_count = 0
print_step = 10000  # 每处理10000行打印一次进度

def tracked_process(x):
    global process_count
    process_count += 1
    if process_count % print_step == 0:
        print(f"已处理 {process_count} 行")
    return a_function(x)

# 执行向量化处理并追踪进度
df['B'] = df['A'].apply(tracked_process)
print(f"任务完成,总计处理 {process_count} 行")

注意事项

  • 分块方案适合超大型数据集,能避免单次加载过多数据占用内存,进度更新更宏观;
  • 计数器方案适合需要细粒度进度的场景,但如果a_function本身耗时极长,建议调大print_step,避免频繁打印拖慢执行速度;
  • 如果用多进程/多线程执行,全局计数器会出现计数不准的情况,此时优先选择分块方案。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.22 03:40:18