次のように使用することを目的として、実行時間の長いコンソールプロセスの進行状況インジケーターを作成しています。
pi = ProgressIndicator()
for x in somelongstuff:
do stuff
pi.update()
pi.print_totals()
基本的には、ドットとダッシュが付いたある種のプログレスバーを出力し、最後に「234234バイト処理済み」のようなものを出力する必要があります。
コンテキストマネージャーとして使用するとよいと思いました。
with ProgressIndicator() as pi:
for x in somelongstuff:
do stuff
pi.update()
ただし、このソリューションについて私が懸念していることがいくつかあります。
- 余分なインデントにより、インジケーター機能が実際よりも重要に見えるようになります
ProgressIndicator
ループで発生する可能性のある例外を処理したくない
これはコンテキストマネージャーの有効なユースケースですか?他にどのような解決策を提案できますか?