18 Jul 2015, 11:30

Python3で進捗表示するライブラリ progressbar2

アプリをつくりながらPythonを勉強中.

今日は、Queueから一つずつオブジェクトを取り出して処理するときに、 進捗表示ができたらいいなと思い、そういうライブラリを探してみた。

progressbarというライブラリができそうなのだが、python3では動かなかった.

困っていたら、以下を見つけた. Python3で動作することを確認.

インストール

pipでインストール.

[sourcecode language=”bash” title=””]
$ sudo pip install progressbar2
[/sourcecode]

使い方

Exampleページを参考にいくつか試す.

基本の使い方

<div class="outline-text-3" id="text-orgheadline3">
  [sourcecode language=&#8221;python&#8221; title=&#8221;&#8221;]<br /> from progressbar import ProgressBar<br /> import time</p> 

  <p>
    p = ProgressBar(100)
  </p>

  <p>
    for i in range(100):<br /> p.update(i+1)<br /> time.sleep(0.01)<br /> [/sourcecode]
  </p>

  <p>
    [sourcecode language=&#8221;text&#8221; title=&#8221;&#8221;]<br /> 100% (100 of 100) |###############################| Elapsed Time: 0:00:01 ETA: 0:00::0<br /> [/sourcecode]
  </p>
</div>

Queueサイズ分の進捗表示

<div class="outline-text-3" id="text-orgheadline4">
  [sourcecode language=&#8221;python&#8221; title=&#8221;&#8221;]<br /> from progressbar import ProgressBar<br /> import queue</p> 

  <p>
    q = queue.Queue()
  </p>

  <p>
    for i in range(12345):<br /> q.put(i)
  </p>

  <p>
    p = ProgressBar(q.qsize()).start()
  </p>

  <p>
    for i in range(q.qsize()):<br /> q.get()<br /> p.update(i)
  </p>

  <p>
    p.finish()<br /> [/sourcecode]
  </p>

  <p>
    [sourcecode language=&#8221;text&#8221; title=&#8221;&#8221;]<br /> 100% (12345 of 12345) |###########################| Elapsed Time: 0:00:00 Time: 0:00:00<br /> [/sourcecode]
  </p>
</div>

おわりに

自分で車輪の再発明をする前に、 ネットでOSSが転がっていないか探すことが大事だと実感.

ほしいものは、大抵おちてる、それがオープンソースの世界.

以上、Happy Hacking!!