Pythonで処理の進行状況を把握する

こんにちは。hacknoteのr.katoです。

プログラムで何か処理をしている際に進行状況がわかると安心しますよね。
個人差はあると思いますが、何もレスポンスがない状態で数秒待たされると人はイライラするそうです。

そこで今回は次の画像のようなプログレスバーというものを表示する方法を紹介していきます。

環境

anaconda3-2019.03

使うライブラリ

  • tqdm
  • time

使い方

tqdmで検索をして真っ先に出てくる方法が次です。

from tqdm import tqdm
from time import sleep

for _ in tqdm(range(10)):
    sleep(0.1)

ですが、これだとfor文でしか使えなく不便なので次のように手動でupdateする方法も紹介します。
1行目のtotalで何回updateを繰り返せばプログレスバーがいっぱいになるか指定しています。
そして、updateの引数でどのくらいプログレスバーを進めるかを指定しています。

bar1 = tqdm(total=10)
for i in range(10):
    bar1.update(1)
    sleep(0.1)
bar1.close()

一つ上と下は書き方が違うだけでやってることは同じです。
totalが10で、update(1)を10回繰り返しています。

bar2 = tqdm(total=10)
bar2.update(1)
sleep(0.1)
bar2.update(1)
sleep(0.1)
bar2.update(1)
sleep(0.1)
bar2.update(1)
sleep(0.1)
bar2.update(1)
sleep(0.1)
bar2.update(1)
sleep(0.1)
bar2.update(1)
sleep(0.1)
bar2.update(1)
sleep(0.1)
bar2.update(1)
sleep(0.1)
bar2.update(1)
sleep(0.1)
bar2.close()

これで簡単に進行状況を表示することができるのではないでしょうか?