Как создать одну полосу обработки с тройным циклом? - PullRequest
0 голосов
/ 02 ноября 2018

У меня есть код лайков

из tqdm import tqdm время импорта

for i in tqdm(range(10)):
    for j in tqdm(range(20)):
        for k in tqdm(range(30)):
            time.sleep(0.01)

Это создаст три полосы обработки как

10%|████▍                                       | 1/10 [00:06<00:54,  6.06s/it
50%|█████████████████████▌                     | 10/20 [00:03<00:03,  3.30it/s]
50%|█████████████████████▌                     | 15/30 [00:03<00:03,  3.30it/s]

Потому что общее количество итераций будет 10x20x30 = 6000. Как мы можем сделать одну полосу обработки, но все еще используя тройной цикл, используя Python 3? Результат лайков

50%|█████████████████████▌                     | 3000/6000 [00:03<00:03,  3.30it/s]

1 Ответ

0 голосов
/ 02 ноября 2018

Вы можете отсоединить tqdm от своих циклов следующим образом:

with tqdm(total=6000) as t:

    for i in range(10):
        for j in range(20):
            for k in range(30):
                time.sleep(0.01)
                t.update()

Тогда все, что вы делаете внутри своих циклов, происходит, как ожидалось, и один индикатор прогресса до 6000 обновляется только во время каждой итерации самого внутреннего цикла.

...