orizuru

つながる.見える.わかる IoTソリュ-ション

PythonのProgressBar(プログレスバー)のデフォルトの挙動の比較をしてみた

約 4 分
PythonのProgressBar(プログレスバー)のデフォルトの挙動の比較をしてみた

こんにちはtetsuです。

プログラムを実行しているときにfor文の処理の進捗を知りたくなるときって結構あるんじゃないかと思います。特にプログラムの実行がなかなか終了しないと「処理が進んでいないんじゃないか」、「一体この処理はいつ終わるんだ」と不安になってきますので、進捗を表示する仕組みを導入したくなります。
私の場合は普段Pythonで開発をするときにはプログレスバーの表示にtqdmというライブラリを使っています。あまり知らなかったのですが、他にもプログレスバーを表示するライブラリがあるということなので今回は簡単に各ライブラリの比較をしてみようと思います。プログレスバーの表示の設定は変更しないで利用することが多いかなと思いますので、デフォルトの挙動について見ていくことにします。
なお、以下ではPythonのバージョンは3.6.8、各ライブラリのバージョンはtqdmは4.32.1、progressbar2は3.42.0、PyPrindは2.11.2を用いています。

tqdm

tqdmを最初に紹介します。
tqdmという謎の文字列はなんだろうと思いますが、リンク先には次のように書かれています。

tqdm means “progress” in Arabic (taqadum, تقدّم) and is an abbreviation for “I love you so much” in Spanish (te quiero demasiado).

インストールは簡単で、

のコマンドで完了です。

使い方も簡単で次のようにfor文のiteratorをtqdmで囲うだけで良いです。

実行結果:
tqdm

なおJupyter Notebook上で利用する場合にはアニメーションで表示することができます。これはtqdmのimportの部分をfrom tqdm import tqdm_notebook as tqdmとすれば良いです。実行すると次のように表示されます。
tqdm_notebook
いい感じに表示されますね。
ただしJupyter Notebook上で使うときにわざわざimportの部分を書き換えるのが面倒に思えます。この問題への対応として、importの部分をfrom tqdm.autonotebook import tqdmと置き換えることで、tqdmが自動でNotebook用のアニメーションを使うかどうかの切り替えをしてくれるようになります。

progressbar2

次にprogressbar2を紹介します。
progressbarは無印のものとprogressbar2があります。どうやらprogressbar2はPython3へ対応していて、無印の方はPython2用のようです。今回はprogressbar2の方を見ていくことにします。
次のようにコマンドを実行してinstallします。

使い方はtqdmと同じで次のようになります。

実行結果:
progressbar

tqdmと比べると1秒あたりの処理回数が書いてありませんが、それ以外は得られる情報はほとんど一緒かなと思います。

PyPrind

最後にPyPrindを紹介します。
次のようにコマンドを実行してinstallします。

使い方は他のものと同じで次のようになります。

実行結果:
pyprind

tqdm、progressbar2と比べると、現時点で何%終わっているのかが正確には分からないですね。

まとめ

最後にtqdmとprogressbarとpyprindの表示を並べて見比べられるようにしておきます。
tqdm:
tqdm
progressbar2:
progressbar
PyPrind:
pyprind

みなさんはどのプログレスバーがお好みでしょうか。どれも使い方は簡単でした。私は1秒あたりの処理回数が分かり、タイピングの量が少なくて済むtqdmがいいかなと思いました。

Leave A Reply

*
*
* (公開されません)