如何让tqdm进度条随被处理列表的长度变化动态更新总进度值?
tqdm动态调整进度条总长度解决方案
你当前的写法在初始化tqdm时传入了固定长度的range对象,进度条的总任务量在初始化阶段就被绑定为data_elim的初始长度,后续不会自动跟随数据长度变化。要实现动态更新总长度,需要手动实例化tqdm对象,自行控制进度更新逻辑。
修改后参考代码
from tqdm import tqdm import numpy as np import pandas as pd # 手动初始化进度条实例,设置初始总长度为data_elim初始长度 pbar = tqdm(total=len(data_elim)) while len(data_elim) > 0: # 此处保留你原有的生成待删除行索引的逻辑 same_residues = ... # 执行删除操作 data_elim = np.delete(data_elim.values, same_residues, 0) data_elim = pd.DataFrame(data_elim) # 更新已完成进度:传入本次删除的行数 delete_count = len(same_residues) pbar.update(delete_count) # 同步更新进度条总长度 = 已完成量 + 当前剩余待处理量 pbar.total = pbar.n + len(data_elim) # 刷新界面显示 pbar.refresh() # 处理完成后关闭进度条 pbar.close()
核心说明
- 直接修改tqdm实例的
total属性即可动态调整总任务量,修改后调用refresh()方法就能实时更新显示效果 update()方法的入参为本次循环新增的完成量,你可以根据自身业务逻辑调整数值,比如每次处理1行就传入1,进度统计会更准确- 如果你不需要保留已完成量的累计统计,只需要显示当前剩余数据的处理进度,可以直接调用
pbar.reset(total=len(data_elim)),不需要手动计算总长度
内容的提问来源于stack exchange,提问作者Isav
相关产品推荐
相关产品推荐

