如何更改 tqdm 的条形大小

How to change tqdm's bar size

我正在使用 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 参数,但不知道如何更改它的大小。

您需要为 ncols 传递一个值。这默认为终端的宽度,所以如果你希望它更小,你必须这样说。

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

ncols : int, optional
The width of the entire output message. If specified, dynamically resizes the progressbar to stay within this bound. If unspecified, attempts to use environment width. The fallback is a meter width of 10 and no limit for the counter and statistics. If 0, will not print any meter (only stats).

相关格式代码为:{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

这仅适用于笔记本的 tqdm 进度条

因为jupyter notebook中的tqdm进度条是一个jupyter widget,我们可以通过改变容器元素的布局来修改进度条。 考虑这个进度条:

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%成为容器的长度。 容器的长度就是单元格的长度。

您还可以应用其他属性,更改其他 2 个元素的长度可以更改进度条的缩进等。 同样的属性也可以应用于整个容器,而不仅仅是它的子容器。要查看可以更改的属性,请转到 documentation