两者之间的区别是什么? 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)
答案 0 :(得分:3)
Straight from the documentation:
如果提供了可选变量total(或带有len()的可迭代),则会显示预测统计数据。
同样来自文档:
total
:int
,可选。预期迭代次数。如果(默认值:无),len(可迭代) 尽可能使用。作为最后的手段,只有基本的进度统计数据 显示(没有ETA,没有进度条)。如果gui是真的这个 参数需要后续更新,指定初始任意 大的正整数,例如INT(9e9)。
当您将total
作为tqdm
的参数提供时,您可以估算代码运行所需的迭代次数,因此它会为您提供预测信息(即使你提供的iterable没有长度。)
<强> 实施例 强>
如果我们在没有<{em} __len__
参数的情况下向tqdm
提供生成器(没有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
还有一整套额外参数,您可以找到here