元セブ島在住のエンジニアの僕「Tommy」が、プログラミング・英語・セブ事情を発信するブログ

Tommy's blog

【Python】プログレスバーを表示する【→プログラム初心者向け】

11月 6, 2019

プログラム女子
処理の時間が長い時に「今は処理中」って知らせる方法はあるかな。。
プログレスバーを表示すればユーザーに「今処理中」を知らせることができるよ。今回はプログレスバーを表示する方法を説明するね。
Tommy

この記事で分かること

  • プログレスバーを表示する必要がある場合が分かる
  • プログレスバーを表示するプログラミング方法が分かる

Pythonでプログレスバーを表示する概要

長い時間がかかるような処理では、どの程度まで処理が進んだかわからないことがあります。もし、何かの原因で処理が止まっていると、時間がかかっているだけなのか、途中で処理が止まっているのかを把握することは難しくなります。

そこで、プログレスバーを端末に表示して処理の進捗を確認することができれば、とても便利です。プログレスバーで進捗状況をわかるようにする方法を説明します。

Pythonでプログレスバーを表示する前提の環境

プログレスバーを使う前提の環境は、下の記事で説明している私の環境と同じ環境で確認しています。

また、レンタルサーバなどのLinuxサーバを使っている場合は、下の記事でプログラミングする環境の作り方を説明しています。

もし、まだプログラムする環境ができていない方は、先にこちらの記事を読んで、プログラミングできる環境をつくることをおすすめします。

Pythonでプログレスバーを表示するサンプルプログラム

ここではプログレスバーの表示をfor文の例を参考に示し、どのようにプログレスバーを表示するのか、プログレスバー表示に関するオプションをサンプルプログラムで説明します。

プログレスバーを表示するサンプルプログラムの作成

サンプルプログラムの作成には、まずプログレスバーを扱うライブラリのインポートします。そして、進捗を確認すべき課題の処理を示し、その中で、インポートしたライブラリの関数をどのように使うかを示すサンプルプログラムを作成します。サンプルプログラムは次の順番で説明します。

  1. ライブラリのインポート
  2. プログレスバーを表示するプログラム

1.ライブラリのインポート

今回のプログレスバー表示には、「progressbar」というライブラリを使用します。なので、「progressbar」というライブラリをインポートしています。

詳細な進捗状況を表示する為に、「progressbar」のライブラリの中の「Percentage」、「Bar」、 「Counter」、「DataSize」というモジュール(サブライブラリ)を使用しました。また、For文で進捗状況の例を示すのですが、少し時間をかせぐために「time」のライブラリを使用しました。

from progressbar import progressbar
from progressbar import Percentage, Bar, Counter, DataSize

import time

  1. ライブラリ「progressbar」からモジュール「progressbaar」をインポートする。
  2. ライブラリ「progressbar」からモジュール「Percentage」「Bar」「Counter」「DataSize」をインポートする。
  3. ライブラリ「time」をインポートする

2.プログレスバーを表示するプログラム

次に、プログレスバーを表示するプログラムの流れは下記のようになります。

  1. 0から99までの100個の整数の要素が格納されたリスト変数「mlist」を定義します。
  2. 変数「widgets」にプログレスバーをどのように表示するかというウィジェットを設定します。
    ※プログレスバーの設定の仕方については次の章で説明します。
  3. 関数「progressbar」の引数に「mlist」と「widgets」を取りfor文を構成します。
    ※プログレスバーで進捗を確認したい処理はfor文の中に書きます
  4. プログレスバーの進捗をわかりやすくする為に、for文の間で0.1秒スリープします。
if __name__ == '__main__':

	mlist = list(range(100))

	widgets=['Test Progress:',Percentage(),'(',Counter(),' of ',str(len(mlist))+')',Bar(),]

	for i in progressbar(mlist,widgets=widgets):
		time.sleep(0.1)

  1. 変数「mlist」を0から100までの整数で初期化する。
  2. 変数「widggets」にウィジェットの設定を表すリストで初期化する。(詳細は次の章のリンクを参照)
  3. 関数「progressbar」の引数に「mlist」と「widgets」を指定し、以下の処理を繰り返す。
    1. 1秒間スリープする。

プログレスバーのウィジェット

ウィジェット(widgets)では、色々な進捗状況の表示形式を指定することができます。ウィジェットの詳細については、下記のサイトを参照ください。

Welcome to Progress Bar’s documentation! — Progress Bar 3.46.1 documentation