我正在处理一个以块表示的序列,其中最后一个块可能更短,并且希望显示显示项目数量的进度条。简单的方法是
import tqdm, math
total=567
chunkSize=100
# each pass process items i0…max(i0+chunkSize,total)
for i0 in tqdm.tqdm(range(0,total,chunkSize)): pass当然,结果显示了块数,而不是项目的块数:
100%|█████████████████████████████████| 6/6 [00:00<00:00, 75121.86it/s]更好的选择是
for i0 in tqdm.tqdm(range(0,total,chunkSize),unit_scale=chunkSize,total=total/chunkSize): pass
for i0 in tqdm.tqdm(range(0,total,chunkSize),unit_scale=float(chunkSize),total=total/chunkSize): pass
for i0 in tqdm.tqdm(range(0,total,chunkSize),unit_scale=chunkSize,total=math.ceil(total/chunkSize)): pass分别给予:
106%|██████████████████████████████████| 600.0/567.0 [00:00<00:00, 6006163.25it/s]
106%|██████████████████████████████████| 600/567.0 [00:00<00:00, 5264816.74it/s]
100%|██████████████████████████████████| 600/600 [00:00<00:00, 4721542.96it/s]那些超过100%的人可以理解
tqdm/std.py:533: TqdmWarning: clamping frac to range [0, 1]因此,我需要的是进度条,它将显示项目的数量(而不是块)、正确的百分比以及正确显示最大值,而不是四舍五入到块大小。想法?
发布于 2022-06-11 06:10:50
变块大小?可以用tqdm.tqdm.update手动处理这一问题
import tqdm
total = 567
chunkSize = 100
with tqdm.tqdm(total=total) as pbar:
# each pass process items i0…min(i0 + chunkSize, total)
for i0 in range(0, total, chunkSize):
end = min(i0 + chunkSize, total)
do_something(start=i0, end=end)
pbar.update(end - i0)https://stackoverflow.com/questions/72536738
复制相似问题