如何更改tqdm的进度条大小

21
我正在使用 tqdm 的进度条,并希望通过参数指示进度条应该具有多少进度刻度来缩短进度条本身。
因此,而不是这样:
Training (16): 100%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▊| 983/984 [00:04<00:00, 242.42it/s, loss=0.0598]
我会得到类似这样的东西。
Training (16): 100%|█████████████| 983/984 [00:04<00:00, 242.42it/s, loss=0.0598]

我已经在tqdm的构造函数中探索了bar_format参数,但无法弄清如何更改其大小。


1
请查看此链接:在控制台中使用文本进度条 - Anonymous
3个回答

27

相关的格式化代码是:{bar:10} -- 如果你想要 10 个字符的进度条。完整的用法如下:

tqdm(iterator, bar_format='{l_bar}{bar:10}{r_bar}{bar:-10b}')
或者
tqdm(iterator, bar_format='{desc:<5.5}{percentage:3.0f}%|{bar:10}{r_bar}')

另请参见:https://github.com/tqdm/tqdm/issues/585


21

你需要传递一个ncols的值。如果不指定,默认宽度为终端宽度,所以如果你想让它变窄,你需要指定宽度。

来自https://github.com/tqdm/tqdm

ncols : int, 可选参数
整个输出消息的宽度。如果指定了值,则动态调整进度条大小以保持在此限制范围内。如果未指定,则尝试使用环境宽度。回退方式是将计量表宽度设置为10并且没有限制计数器和统计信息的宽度。如果为0,则不会打印任何计量表(仅统计信息)。


7
ncols是整个输出信息的宽度,我想确定进度条本身的宽度。 - bluesummers
但是您要求的正是较小的ncols所能提供的。进度条的宽度是ncols减去输出的其他部分的宽度。 - Dan D.
它保证不会切割后缀/描述吗? - bluesummers

2
这仅适用于笔记本上的tqdm进度条。
由于jupyter笔记本中的tqdm进度条是一个jupyter小部件,因此我们可以通过更改容器元素的布局来修改该进度条。考虑以下进度条:
from tqdm.auto import tqdm
bar = tqdm(
    bar_format="Amount: {bar}{n_fmt}/{total_fmt} [{elapsed}<{remaining}, {rate_fmt}{postfix}]",
)

使用bar.container.children访问元素,您会得到:

(HTML(value='Amount: '),
 FloatProgress(value=0.0, bar_style='info', layout=Layout(width='20px'), max=1.0),
 HTML(value='0/? [00:00&lt;?, ?it/s]'))

如果您想改变实际条的长度,可以使用以下方法:
bar.container.children[1].layout.width = "70%"

这将使进度条的长度达到容器长度的70%。 容器的长度是单元格的长度。 您还可以应用其他属性,更改另外两个元素的长度可能会改变进度条的缩进等。同样的属性也可以应用于整个容器,而不仅仅是它的子元素。要查看可以更改哪些属性,请转到文档

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