3
4

tqdmで進捗確認(プログレスバー)

Posted at

はじめに

tqdmで進捗確認(プログレスバー)に関しての備忘録です。
コードを書き始めて1年以内の若輩者です😅
もし間違いがあれば、ご指摘いただけると助かります🙇

🦁結論🦁

ループ処理や大きなデータを読み込んだりする際に進捗を簡単に確認できるようにするためのツール。
並列処理、非同期処理などにも使える。

押さえておくべき点

  • forループで直接使用できる。
  • 表示のフォーマットや速度の単位を変更できる。
  • スレッドやプロセスでの使用もサポートされてる。

利用シーン

  • ループ処理。
  • 大量のデータ処理
  • ファイルダウンロードしてるとき

注意点

  • tqdmを使用するとわずかに処理が遅くなる場合がある。
  • 複数の進捗バーを同時に使うと出力が乱れることがある。
  • エラーが発生しても進捗バーが残る場合があるので適切に処理する必要ある。

使用方法一覧

基本の使い方

from tqdm import tqdm
import time

# 100回繰り返すループ
for i in tqdm(range(100)):
    # ここでは例として、各繰り返しで0.1秒待つ
    time.sleep(0.1)

1. unitunit_scale

from tqdm import tqdm
import time

# 'unit'を指定して、単位を'files'に設定
# 'unit_scale'をTrueにして、指定したunitのデータサイズを1000単位でKを表示するように設定
for i in tqdm(range(4500), unit='files', unit_scale=True):
    time.sleep(0.001)

データサイズ

  1. バイト(B): 1B〜999Bまで
  2. キロバイト(KB): 約1,000B(正確には1KB = 1024B)〜約999KBまで
  3. メガバイト(MB): 約1,000KB〜約999MBまで
  4. ギガバイト(GB): 約1,000MB〜
    unit_scale=Trueは、進捗バーを上記の単位に自動的に調整。

2. bar_format

進捗バーのフォーマットをカスタマイズできる。プレースホルダを使って、表示したい情報とそのレイアウトを指定できる。

###ベースとなる配置

from tqdm import tqdm
import time

# カスタムのbar_formatを指定
for i in tqdm(range(100),
              bar_format='{l_bar}{bar:20}{r_bar}',
              desc="Processing"):
    time.sleep(0.02)

以下は、bar_formatで使用できる一般的なプレースホルダーとその表現内容です:

  • {l_bar}: 進捗バーの左側に表示される部分(デフォルトでは進捗状態を表すテキスト)
  • {bar}: 実際の進捗バーのグラフィカル表示部分
  • {r_bar}: 進捗バーの右側に表示される部分(デフォルトでは残り時間などの情報)
  • {n}: 現在処理されたアイテムの数
  • {total}: 処理すべき全アイテムの総数
  • {elapsed}: 既に経過した時間(秒)
  • {remaining}: 完了までに予想される残り時間(秒)
  • {rate}: 処理速度(アイテム/秒)
  • {desc}: tqdmのdescパラメータによって指定された説明文
  • {percentage:3.2f}: パーセンテージで示される(3.2f = 100.00%)

3. initialposition

initial: 最初に表示する進捗の量を設定できる(進捗バーの初期値)
position: 複数の進捗バーを使う際に、進捗バーの縦位置を指定できる。

from tqdm import tqdm
import time

# 'initial'で開始時の進捗を50に設定、2つの進捗バーを表示して、それぞれに'position'を設定
for i in tqdm(range(100), initial=50, position=0):
    time.sleep(0.02)
for j in tqdm(range(50), position=1):
    time.sleep(0.04)

4. leave

処理完了後に進捗バーを表示し続けるかどうかを選択できる(TrueかFalse)

from tqdm import tqdm
import time

# 'leave'をFalseに設定して、処理完了後に進捗バーを非表示にする
for i in tqdm(range(100), leave=False):
    time.sleep(0.02)

5. colour

進捗バーの色を指定できる。

from tqdm import tqdm
import time

# 'colour'を指定して、進捗バーの色を青に設定
for i in tqdm(range(100), colour='blue'):
    time.sleep(0.02)

6. ncols

ncolsは進捗バーが占めるコンソールまたはターミナル上の文字数(列数)を指定できる。

from tqdm import tqdm
import time

for i in tqdm(range(100), ncols=80, desc="Processing"):
    time.sleep(0.02)
# 進捗バーの幅を半角80文字に固定

まとめ✍️

プログレスバーは待ち時間を有効に使うために必要なツール。
時間がかかる処理にはどんどん活用していく。

3
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
4