首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >块处理序列的tqdm进度

块处理序列的tqdm进度
EN

Stack Overflow用户
提问于 2022-06-07 19:40:14
回答 1查看 330关注 0票数 2

我正在处理一个以块表示的序列,其中最后一个块可能更短,并且希望显示显示项目数量的进度条。简单的方法是

代码语言:javascript
复制
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

当然,结果显示了块数,而不是项目的块数:

代码语言:javascript
复制
100%|█████████████████████████████████| 6/6 [00:00<00:00, 75121.86it/s]

更好的选择是

代码语言:javascript
复制
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

分别给予:

代码语言:javascript
复制
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%的人可以理解

代码语言:javascript
复制
tqdm/std.py:533: TqdmWarning: clamping frac to range [0, 1]

因此,我需要的是进度条,它将显示项目的数量(而不是块)、正确的百分比以及正确显示最大值,而不是四舍五入到块大小。想法?

EN

回答 1

Stack Overflow用户

发布于 2022-06-11 06:10:50

变块大小?可以用tqdm.tqdm.update手动处理这一问题

代码语言:javascript
复制
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)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72536738

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档