あるWebサイトの大量のページをスクレイピングしている際に進捗状況を確認したく、Pythonでプログレスバーを実装してみたので使い方をまとめました。
tqdmとは
tqdm(アラビア語で"進捗"を意味する"taqaddum"から来ています)は、Pythonで使える簡単で拡張性のあるプログレスバーのライブラリです。
Pythonファイルだけでなく、Jupyter Notebookやgoogle colabでの利用も可能です。
また、tqdm.autoというモジュールを使えば、実行環境に合わせて最適なプログレスバーが自動で選択されます。
準備
下記コマンドでtqdmをインストールします。
pip install tqdm
使い方
ループ処理にtqdm関数を適用するだけでプログレスバーが表示されます。
進捗以外にも経過時間と(推定)残り時間や1ループあたりの処理にかかる時間も表示されます。
from tqdm.auto import tqdm
import time
def main():
for i in tqdm(range(100)):
time.sleep(1)
if __name__ == '__main__':
main()
実行結果
25%|██████████████████████████████████████████ | 25/100 [00:25<01:15, 1.00s/it]
ネストされたループ処理でも使用できます。
from tqdm.auto import tqdm
import time
def main():
for i in tqdm(range(10), desc="Outer Loop"):
for j in tqdm(range(10), desc="Inner Loop"):
time.sleep(1)
if __name__ == '__main__':
main()
実行結果
Outer Loop: 30%|███████████████████████████████████████████████▍ | 3/10 [00:30<01:10, 10.05s/it]
Inner Loop: 60%|██████████████████████████████████████████████████████████████████████████████████████████████▊ | 6/10 [00:06<00:04, 1.00s/it]
プログレスバーにはコード内の情報も表示できます。
from tqdm.auto import tqdm
import time
def fib(n):
a, b = 0, 1
if n == 1:
return a
elif n == 2:
return b
else:
for m in range(n-2):
a, b = b, a+b
return b
def main():
with tqdm(total=10, postfix={"現在のフィボナッチ数":0}) as pbar:
for i in range(1, 11):
result = fib(i)
time.sleep(1)
pbar.update(1)
pbar.set_postfix({"現在のフィボナッチ数":result})
if __name__ == '__main__':
main()
実行結果
80%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████ | 8/10 [00:08<00:02, 1.01s/it, 現在のフィボナッチ数=13]
参考
今回はここまでです。