Как получить текущее значение tqdm?

#python #tqdm

#python #tqdm

Вопрос:

Как мне получить обновленное tqdm.n ? Этот код, кажется, работает:

 from tqdm import tqdm
pbar = tqdm(range(10000))
for i in pbar:
     pbar.refresh()
     print 'pbar', pbar.n
  

Должен ли я вызывать tqdm.refresh() ?

Комментарии:

1. Пожалуйста, скажите, почему это, кажется, работает? И почему это не сработает? По моему опыту, вам не нужно refresh() , это только обновляет отображаемый индикатор выполнения. Но номер итерации, похоже, обновляется только каждые десять итераций. Поэтому вы запрашиваете обновленное tqdm.n ?

Ответ №1:

Кажется, это работает

 from tqdm import tqdm
class TqdmSpy(tqdm):
    @property
    def n(self):
        return self.__n

    @n.setter
    def n(self, value):
        print(value, self.total)
        self.__n = value
  

Комментарии:

1. вместо print вы можете вызвать свою функцию. Таким образом, он будет действовать как обратный вызов. На каждой итерации tqdm ваша функция будет вызываться с текущим n в качестве параметра

2. Что не сработало, на самом деле? Кроме того, есть специальный tqdm.write() для вывода на печать без вмешательства в индикатор выполнения.