tqdm的total参数有什么作用?
What does tqdm's total parameter do?
两者有什么区别?
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)
Straight from the documentation:
If the optional variable total (or an iterable with len()) is provided, predictive stats are displayed.
也来自文档:
total
: int
, optional .
The number of expected iterations. If (default: None), len(iterable)
is used if possible. As a last resort, only basic progress statistics
are displayed (no ETA, no progressbar). If gui is True and this
parameter needs subsequent updating, specify an initial arbitrary
large positive integer, e.g. 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
还有一整套附加参数,您可以在here
中找到
两者有什么区别? 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)
Straight from the documentation:
If the optional variable total (or an iterable with len()) is provided, predictive stats are displayed.
也来自文档:
total
:int
, optional .The number of expected iterations. If (default: None), len(iterable) is used if possible. As a last resort, only basic progress statistics are displayed (no ETA, no progressbar). If gui is True and this parameter needs subsequent updating, specify an initial arbitrary large positive integer, e.g. 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
还有一整套附加参数,您可以在here