У вас есть индикатор выполнения, который позволяет прогнозировать длину вашей структуры данных.
range
реализует hook method__len__
, так что вы можете открыть для себя длину Doing встроенный len
>>> dir(range(10))
[ '__le__', '__class__', '__contains__', '__delattr__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__gt__', '__hash__', '__init__', '__iter__', '__len__', '__lt__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__reversed__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', 'count', 'index', 'start', 'step', 'stop']
>>> len(range(10))
10
zip
, однако, не обеспечивает способ угадать длину обернутой структуры, так что, вероятно, именно поэтому потому что tqdm
не может отображать индикатор выполнения.
dir(zip(range(10))) # no __len__ here
['__class__', '__delattr__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__gt__', '__hash__', '__init__', '__iter__', '__le__', '__lt__', '__ne__', '__new__', '__next__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__']
>>> len(zip(range(10)))
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: object of type 'zip' has no len()
Edit:
Да, это так. Посмотрите на docs
...
Оберточные перечислимых итерируемых: использовать enumerate(tqdm(...))
вместо tqdm(enumerate(...))
. То же самое относится к numpy.ndenumerate
. Это , потому что функции enumerate
имеют тенденцию скрывать длину итераций. tqdm
нет.
...
Ручного управления на tqdm()
обновлений, используя with
заявление:
with tqdm(total=100) as pbar:
for i in range(10):
pbar.update(10)
Если дополнительные переменные общие (или итерацию с len()
) является при условии, отображается прогностические статистики ,
with
также является необязательным (вы можете просто присвоить tqdm()
переменной, но в этом случае не забудьте del
или close()
в конце:
pbar = tqdm(total=100)
for i in range(10):
pbar.update(10)
pbar.close()
Спасибо за сообщение. Это помогло выяснить способ инициализации tqdm с помощью «общего» аргумента ключевого слова, который заставляет его работать с zip. –