💯

Pythonで進捗可視化のためにtqdmを使う

2021/07/13に公開
2

tqdm とは

Pythonで進捗をプログレスバーとして可視化したい時に使います。

from tqdm import tqdm
import time

for i in tqdm(range(100)):
    time.sleep(0.01)

tqdmの例

導入

pip install tqdm

使い方

for hoge in foofor hoge in tqdm(foo) に変えるだけです。

最後に消したい

leaveFalseを指定することで、100%になったらプログレスバーを消すことが可能です。

from tqdm import tqdm
import time

for i in tqdm(range(100), leave=False):
    time.sleep(0.01)

tqdm 最後に消す例

入れ子で使いたい

特に工夫をしなくても使えます。

from tqdm import tqdm
import time

for i in tqdm(range(3)):
    for n in tqdm(range(50), leave=False):
        time.sleep(0.01)

tqdm 入れ子の例

辞書 foo.items() でも使いたい

for key, value in tqdm(foo.items()) のように使うことも可能です。

from tqdm import tqdm
import time

foo = {
    "banana": 1,
    "fish": 1,
    "apple": 5,
    "orange": 3,
    "strawberry": 3,
}

hoge = ""

for key, value in tqdm(foo.items()):
    hoge += f"{key}{value}個あります。\n"
    time.sleep(0.4)

print(hoge)

説明を入れたい

desc に指定することが出来ます。

from tqdm import tqdm
import time

for i in tqdm(range(100), desc="hoge"):
    time.sleep(0.01)

tqdm 説明を入れる例

内包表記で使いたい

内包表記でも使えます。

from tqdm import tqdm

hoge = [i for i in tqdm(range(10000000))]

その他

from tqdm.notebook import tqdm で Jupyter Lab でも表示することができるそうです(ただし拡張機能などが必要っぽい)。
その他の使用例や引数などは、tqdm 公式ドキュメントにたくさん書かれています。

データセットの処理であとどのくらい時間かかるんだろう、という時に便利でした。もっと前から知りたかった!

追記(2021/07/17 10:44)
ymdさんよりコメントで以下を教えていただきました。ありがとうございます!

from tqdm.auto import tqdm
を使うとtqdm.notebookかtqdm.tqdmを自動で判断して使えるみたいです。

[tqdm.auto](https://tqdm.github.io/docs/shortcuts/#tqdmauto)を Google Colaboratory で使ってみました。

tqdm.auto

tqdm.autoの方はノートブック用の表示になっていますね。また、 Google Colaboratory には既に tqdm が入っているようです。

参考

https://github.com/tqdm/tqdm

https://tqdm.github.io/

Discussion

ymdymd

from tqdm.auto import tqdm
を使うとtqdm.notebookかtqdm.tqdmを自動で判断して使えるみたいです。つまりjupyterでもterminalでもどっちでも動く