printでずらっと出力していた進捗状況をプログレスバーで表示する方法を知ったのでメモします。
tqdmで進捗を可視化する
このモジュールを使うと▼のようなプログレスバーがforの進捗に応じて表示できます。
利用方法はtqdm
をインポートして、配列などイテレータをtqdm(iterable)
とするだけでOKです。
!pip install tqdm
from tqdm import tqdm
for i in tqdm(range(616435)):
# 処理
出力
76%|████████████████████████ | 7568/10000 [00:33<00:10, 229.00it/s]
またコマンドとしても利用出来ます。 ▼のようにパイプラインで利用する方法もREADMEに載ってます。
$ seq 9999999 | tqdm --bytes | wc -l
75.2MB [00:00, 217MB/s]
9999999
$ tar -zcf - docs/ | tqdm --bytes --total `du -sb docs/ | cut -f1` \
> backup.tgz
32%|██████████▍ | 8.89G/27.9G [00:42<01:31, 223MB/s]
▼アニメーション
利用例①
インストール
$ pip install tqdm
# Google Colaboratory
!pip install tqdm
配列をtqdm()
に入れるだけでプログレスバーを表示できる。
from tqdm import tqdm
from time import sleep
text = ""
for char in tqdm(["a", "b", "c", "d"]):
sleep(0.25)
text = text + char
出力
100%|██████████| 4/4 [00:01<00:00, 3.97it/s]
▼インデックスを使いたい時。
array = ["a", "b", "c", "d"]
for i in tqdm(range(len(array))):
some_function(array[i])
利用例②
こちらの記事の一部の処理の時間が長くて、いつ終わるか不安だったのでtqdmで進捗を確認できるようにした。
captions
が文字列のリストになっていて順次文章ベクトルに変換している。
インポートとイテレータをtqdm()
に入れるだけで使える。コメントした箇所が変更した部分。
import numpy as np
import spacy
import pkg_resources, imp
from tqdm import tqdm # 追加
imp.reload(pkg_resources)
nlp = spacy.load("ja_ginza")
vectors = []
# for caption in captions:
for caption in tqdm(captions): # tqdmを使ってループする
doc = nlp(caption, disable=['ner'])
vectors.append(doc.vector)
del nlp
出力
87%|████████▋ | 538893/616435 [56:20<07:39, 168.71it/s]
Python:ファイルダウンロードの進行状況とファイルサイズを表示する方法。urllib
Pythonschedule2024-02-27
【Python】tqdmでforの進捗状況を表示する
PythonColabolatoryschedule2021-02-16
学習済みの日本語単語ベクトルをColabolatoryで試してみる
自然言語処理PythonColabolatoryschedule2021-02-04
Unity ML-Agentsで新しく学習環境を作る
Unity機械学習C#PythonDeepLearningschedule2021-01-22
27. 内部リンクの除去
自然言語処理100本ノックPythonschedule2020-03-17