Прогрессбар tqdm, отображение шагов при изменяемом шаге иттерации
Например при обработке N файлов разной длины, хочется видеть и пофайловый прогрес (М из N) и суммарный прогресс времени, с учетом их размера.
from tqdm import tqdm
from time import sleep
fmt = '{percentage:3.0f}% ({n_fmt} of {total_fmt})'
iteration = (3, 2, 1, 4)
bar = tqdm(total=sum(iteration), bar_format=fmt)
for i in iteration:
sleep(i)
bar.update(i)
Будет отображать:
30% 3 of 10
50% 5 of 10
60% 6 of 10
100% 10 of 10
Мне надо:
30% 1 of 4
50% 2 of 4
60% 3 of 4
100% 4 of 4
Как?
Ответы (1 шт):
Автор решения: Lecron
→ Ссылка
На основе фрагмента из справки, по внедрению собственного параметра в прогрессбар.
from tqdm import tqdm
from time import sleep
class TqdmTick(tqdm):
def __init__(self, ticks, *args, **kwargs):
self._ticks = ticks
self._tick = 0
super().__init__(*args, **kwargs)
def tick(self, value):
self._tick += 1
self.update(value)
@property
def format_dict(self):
d = super().format_dict
d.update(tick=str(self._tick), ticks=str(self._ticks))
return d
fmt = '{tick} of {ticks} {percentage:3.0f}%'
iteration = (3, 2, 1, 4)
bar = TqdmTick(ticks=len(iteration), total=sum(iteration), bar_format=fmt)
for i in iteration:
sleep(i)
bar.tick(i)