tqdm的total参数是什么作用?

22

这两者有什么不同呢? tqdm可以包装任何可迭代对象。但是我不确定当给定两个参数时tqdm的功能如何。

# train_ids = list
elements = ('a', 'b', 'c')
for count, ele in tqdm(enumerate(elements)):
    print(count, i)
# two arguments
for count, ele in tqdm(enumerate(elements), total=len(train_ids)):
    print(count, i)

1
我更新了您的标题以处理您展示的特定场景,因为tqdm需要很多参数。如果您想改回来,请随意。 - user3483203
1个回答

32

直接来自文档:

如果提供了可选的变量total(或具有len()的可迭代对象),则显示预测统计信息。

还是来自文档:

total : int, 可选参数 .

预期迭代次数。如果为None(默认值),则在可能的情况下使用len(iterable)。作为最后的手段,只显示基本的进度统计信息(没有ETA,没有进度条)。如果gui为True并且此参数需要随后更新,请指定一个初始的任意大的正整数,例如int(9e9)。

当您将total作为参数提供给tqdm时,您正在为代码运行的迭代次数提供估计,因此它将为您提供预测信息(即使您提供的可迭代对象没有长度)。

示例

如果我们向tqdm提供一个生成器(没有__len__的东西)而没有提供total参数,那么我们不会得到进度条,只会得到经过的时间:

no_len = (i for i in range(50))

for i in tqdm(no_len):
    time.sleep(0.1)

# Result
19it [00:01,  9.68it/s]

然而,如果我们使用total参数来指定预期迭代次数,tqdm将会估计进度:

for i in tqdm(no_len, total=49):
    time.sleep(0.1)

# Result
94%|████████████████████████████████████████▎  | 46/49 [00:04<00:00,  9.72it/s

除了 total 参数之外,tqdm 还有一整套其他参数,您可以在这里找到。


6
这个发电机实际上有50个元素,所以 total=50 - Matt

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接