머신러닝과 기술적 분석

Progress Bar 사용법 본문

python

Progress Bar 사용법

BetterToday 2017. 8. 16. 23:11
728x90

시간이 오래걸리는 작업의 경우 Progress Bar 를 사용하면 Task 의 진행 정도를 알 수 있어서 매우 유용하다.
Python 에서는 progressbar 라는 package 에서 해당기능으 제공한다.

1. ProgressBar 패키지 설치

먼저 progressbar package 가 설치되어있는 지 확인하자. 아래의 명령을 통해 현재 컴퓨터에 설치되어있는 Python Interpreter 의 Package 버젼을 확인 할 수 있다.

c:\> pip freeze

progressbar 패키기가 없다면 간단히 pip 을 이용해서 설치하자.

c:\> pip install progressbar

2. 사용 예제

사용법은 Package Documentaion 에 나와있는데, 어찌된 일인지 제대로 실행이 안되는 예제들이 있다.

Version 은 최신버젼(2.3) 을 확인했는데, 문서 update 가 안 되있는 것 같다. 아래의 예제들은 2.3 버젼에서 직접확인한 내용으로만 작성했다.

아래의 예제들은 공통으로 아래의 2개 모듈을 import 하고 실행한다.

import time
import progressbar

2.1. Wrapping an iterable

가장 기본적인 사용방법이다. loop 밖에서 ProgressBar class 의 객체를 생성하고, 생성한 객체로 iterator 를 감싼다.

bar = progressbar.ProgressBar()
for i in bar(range(100)):
    time.sleep(0.02)

실행 결과

100% |########################################################################|

2.2. Context wrapper

첫 번째 예제와 별 차이가 없지만 bar 객체를 loop 안에서 명시적으로 update 한다.
공식 문서에는 예제 코드가 약간 다르지만 실행이 되지 않아 다시작성했다.

bar = progressbar.ProgressBar(maxval=10).start()
for i in range(10):
    time.sleep(0.1)
    bar.update(i)
bar.finish()

실행 결과은 1번 예제와 동일하다.

100% |########################################################################|

2.3. Combining progressbars with print output

Text 출력과 같이 사용하는 방법이다.

bar = progressbar.ProgressBar(maxval=10).start()
for i in range(10):
    print 'Some text', i
    time.sleep(0.1)
    bar.update(i)
bar.finish()
Some text 0                                                                   |
Some text 1
Some text 2##                                                                 |
Some text 3#########                                                          |
Some text 4################                                                   |
Some text 5#######################                                            |
Some text 6###############################                                    |
Some text 7######################################                             |
Some text 8#############################################                      |
Some text 9####################################################               |
100% |########################################################################|

2.4. Progressbar with unknown length

bar = progressbar.ProgressBar().start()
for i in range(10):
    time.sleep(0.1)
    bar.update(i)
bar.finish()

실행 결과은 1번 예제와 동일하다.

100% |########################################################################|

2.5. Bar with custom widgets

좀 더 Fancy 하게 실행시간, 남아있는 시간등을 출력하는 방법이다.
widgets parameter 에 출력양식을 정의한다.

bar = progressbar.ProgressBar(widgets=[' [', progressbar.Timer(), '] ', progressbar.Bar(), ' (', progressbar.ETA(), ') ',])
for i in bar(range(100)):
    time.sleep(0.1)

아래와 같이 깔끔하게 출력된다. (개인적으로 상당히 마음에 든다! )

[Elapsed Time: 0:00:13] |###################################| (Time: 0:00:13)
728x90
반응형
Comments