tqdm.使用多个栏

Jua*_*eni 7 python tqdm

我想有两个独立的进度条.

这是一个最小的例子,如果我使用两个条形,它们没有正确更新.而是创建新的条形图.

import time
from tqdm import *

pbar1 = tqdm(total=100)
pbar2 = tqdm(total=200)

for i in range(10):
    pbar1.update(10)
    pbar2.update(20)
    time.sleep(1)
Run Code Online (Sandbox Code Playgroud)

运行示例时.我有类似的东西:

  0%|          | 0/100 [00:00<?, ?it/s]
 20%|??        | 20/100 [00:01<00:04, 19.97it/s]
 30%|???       | 30/100 [00:02<00:04, 15.36it/s]
 40%|????      | 40/100 [00:03<00:04, 13.23it/s]
 50%|?????     | 50/100 [00:04<00:04, 12.05it/s]
 60%|??????    | 60/100 [00:05<00:03, 11.35it/s]
 70%|???????   | 70/100 [00:06<00:02, 10.90it/s]
 80%|????????  | 80/100 [00:07<00:01, 10.61it/s]
 90%|????????? | 90/100 [00:08<00:00, 10.42it/s]
100%|??????????| 100/100 [00:09<00:00, 10.28it/s]
100%|??????????| 200/200 [00:09<00:00, 20.57it/s]
Run Code Online (Sandbox Code Playgroud)

如图所示,更新无法正常工作并添加新栏.有两个独立的条可以正确更新吗?

Ama*_*ngh 18

嘿不确定你是否修复了这个问题,但position在初始化条形时尝试使用参数:

pbar1 = tqdm(total=100, position=1)
pbar2 = tqdm(total=200, position=0)
Run Code Online (Sandbox Code Playgroud)

tqdm GitHub页面:

position:int,可选

指定行偏移以打印此栏(从0开始)如果未指定则自动.用于一次管理多个条(例如,从线程).

  • 这并不能解决我的问题:`from tqdm import tqdm; def c(): for _ in tqdm([1, 2, 3, 4, 5],position=0): for _ in tqdm([1,2,3, 4],position=1): 通过`仍然产生多行。我正在使用 Python 3.6.8,并在 IDLE 中运行它。 (8认同)
  • 但在这种情况下,您在第一个循环的每次迭代中都会生成一个新的 tqdm 条。如果您必须独立循环(例如 2 个线程/进程),则此解决方案将起作用,以便每个条仅创建一次。 (2认同)

Edu*_*eis 9

这里tqdm我有一些嵌套进度条的例子,一般情况下的例子和一些问题;我从中突出显示了以下代码片段,该代码片段产生了两个漂亮的嵌套进度条

def test48():
  with tqdm.notebook.trange(3, position=0, desc='Outter') as outter_range:
    for i in outter_range:
      leave = i == len(outter_range) - 1
      for _ in tqdm.notebook.trange(3, position=1, leave=leave, desc='Inner'):
        sleep(.3)
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述