tqdm的总参数有什么作用?

时间:2018-05-20 02:25:12

标签: python tqdm

两者之间的区别是什么? 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 个答案:

答案 0 :(得分:3)

Straight from the documentation

  

如果提供了可选变量total(或带有len()的可迭代),则会显示预测统计数据。

同样来自文档:

  

totalint,可选

     

预期迭代次数。如果(默认值:无),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