データ構造の長さを予測できるように、プログレスバーが必要です。
range
がhook method__len__
実装して、あなたが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()
編集:
ええ、それはそれです。 docs
...
ラッピング列挙反復可能オブジェクトを見て:代わりに tqdm(enumerate(...))
のenumerate(tqdm(...))
を使用しています。 numpy.ndenumerate
についても同様です。 enumerate
関数はiterablesの長さを隠す傾向があるので、これは です。 tqdm
はありません。 with
ステートメントを使用してtqdm()
更新に
...
手動制御:
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()
この投稿をいただきありがとうございます。これは、zipで動作するようにする 'total'キーワードを引数としてtqdmを初期化する方法を解明するのに役立ちました。 –