Pythonでプログレスバーを表示させる

インストールなどでよく表示させるプログレスバー
「100%|███████████████████| 10/10 [00:10<00:00, 1.00s/it]」
ってcursesなどを使って自分で実装していると思っていました。
 ライブラリあるんですね。
 しかも簡単に使えます。

環境

Windows11Home
Python 3.11.1

使い方

①tqdmライブラリのインストール

次のコマンドでインストールできます。

# コマンドプロンプト
# tqdm のインストール
C:\ > pip install tqdm

# tqdmのバージョン確認
C:\ > pip show tqdm
Name: tqdm
Version: 4.67.1 (執筆時ではこのバージョンでした)
:

②プログラムの作成

プログラムはこんな感じです。

# test_tqdm.py で保存
from tqdm import tqdm
for i in tqdm(range(10000)):
  pass

実行結果

test_tqdm.pyを実行すると一瞬で処理が終了しますが、プログレスバーが表示されていることがわかります。

C:\data >python test_tqdm.py
100%|███████████████████████| 10000/10000 [00:00<00:00, 9965084.34it/s]

 プログラムが一瞬で終了してしまうので、ウェイトを追加します。
 プログラムにウェイトを追加するとプログレスバーが徐々に進みます。

from tqdm import tqdm
import time
for i in tqdm(range(100)):
    time.sleep(0.5)

その他Tips

 公式サイト(tqdm documentation)を確認したところ、プログレスバーの種類を変更できるようで、
   for i in tqdm(range(100)):
   ↓
   for i in tqdm(range(100),ascii=True):
に変更すると、アスキーアートでバーを表示してくれました。

C:\data >python test_tqdm.py
100%|#######################################################| 100/100 [00:01<00:00, 96.51it/s]

 次のようにすることで、表示されるバーの長さも調整できます
   for i in tqdm(range(100),ncols=50,ascii=True ):
実行結果は次の通り

C:\data >python test_tqdm.py
100%|###########| 100/100 [00:01<00:00, 96.36it/s]

 CLI上でパイプラインを使った呼び出しでも動作すると書かれているのですが、Windowsのコマンドプロンプトからパイプ付きで呼び出すと、文字化けしてしまい使えませんでした。
 使い方が違うのでしょうか。
 Linuxなら動くのかもしれません(実験してません)

終わりに

 Cursorを使ってプログレスバー(みたいなもの)をゴリゴリと作っていたので、この機能をもっと早く知りたかったです。