如何更改tqdm的柱线大小

时间:2019-01-25 09:40:39

标签: python tqdm

我正在使用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]

我已经研究了bar_format的构造函数中的tqdm自变量,但不知道如何更改其大小。

3 个答案:

答案 0 :(得分:2)

您需要传递ncols的值。默认为终端的宽度,因此,如果要减小终端的宽度,则必须这样说。

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

  

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

答案 1 :(得分:1)

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

答案 2 :(得分:1)

这只适用于笔记本的 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