tqdm使用
Basic
最直接的就是用tqdm把一个itereble object wrap起来,然后直接用:
with tqdm(range(config['INCV_epochs']), desc='INCV iter:{}'.format(kwargs['INCV_iter']), unit='epoch') as t: for epoch in t:
或者是自己手动update:
with tqdm(total=10, bar_format="{postfix[0]} {postfix[1][value]:>8.2g}", postfix=["Batch", dict(value=0)]) as t: for i in range(10): sleep(0.1) t.postfix[1]["value"] = i / 2 t.update()
set_postfix()
, set_description()
的用法
set_postfix()
默认情况下能够在进度条的最后显示一些参数,比如learning rate等set_description()
则能够改变进度条前面的描述set_postfix()
的输入应该是一个dict,或者kwargs,反正最后会转成那样的str,因此如果想自己控制str,应该用set_postfix_str()
- 建议少用
write
,多用set_posfix
/set_postfix_str
。否则容易多行显示而非单行的progressbar
不能单行显示的解决方法:
参考
法1
for i in tqdm(list, position=0, leave=True):
法2
try:
with tqdm(...) as t:
for i in t:
...
except KeyboardInterrupt:
t.close()
raise
t.close()
All articles in this blog are licensed under CC BY-NC-SA 4.0 unless stating additionally.