파이썬 for문을 실행하면 잘 진행되고 있는지 알기가 어렵습니다. 그래서 중간중간 상태를 print문으로 출력해 보는데요. 파이썬 패키지를 이용하면 진행 바를 쉽게 출력할 수 있습니다. 사용방법도 매우 쉽습니다. 파이썬 진행 바를 만들어 주는 패키지 tqdm을 알아보았습니다.

 

 

파이썬에는 이미 개발된 유용한 패키지들이 많아 프로그래밍을 쉽게 할 수 있습니다. 데이터를 수집하는 API의 경우 일별로 데이터를 가져오는 경우가 많습니다. 예전에 로또 당첨결과를 수집한 코드를 가지고 적용해 보았습니다. 로또 당첨결과는 차수별로 url을 만들어서 수집을 할 수 있습니다. 아래와 같이 1회차부터 600회 차까지 for문으로 당첨결과를 수집했습니다.

 

# coding=utf-8
 
from urllib.request import urlopen
import pandas as pd
from tqdm import tqdm
import json
 
def lotto(chasu):
    url="http://www.nlotto.co.kr/common.do?method=getLottoNumber&drwNo="+str(chasu)
 
    result_data = urlopen(url)
    result = result_data.read()
 
    data = json.loads(result)
 
    data_1 = pd.DataFrame.from_dict(data,orient='index')
    data_1=data_1.transpose()
 
    return data_1
 
 
if __name__ == "__main__":

    lotto_db = pd.DataFrame()

    for i in tqdm(range(1,600),mininterval=1):
        data_1=lotto(i)
        lotto_db = pd.concat([lotto_db,data_1])

 

중간중간에 수집이  잘 되는지 알 수가 없습니다. 그래서 for문에 아래와 같이 비율을 나타내는 print문을 넣곤 했습니다.

 

print(str(round(i/600*100,1))+"% is completed.")

 

어려운 일은 아니지만 귀찮고 시간이 소요되는 일입니다. 하지만 tqdm 패키지를 사용하면 훨씬 간결하고 쉽게 진행바를 나타낼 수 있습니다. 설치부터 간단한 사용법까지 차례대로 알아보겠습니다.

 

 

1. tqdm 패키지 설치

패키지는 pip install tqdm으로 설치가 가능합니다.

 

2. tqdm 사용법

1) 기본 사용법
사용법은 간단합니다. for문의 in에 해당하는 부분을 tqmd으로 감싸주면 됩니다. 여러가지 옵션을 주어서 복잡하게 사용할 수도 있지만, 그런 일은 거의 없습니다.

 

from tqdm import tqdm

    for i in tqdm(range(1, 600)):
        data_1 = lotto(i)
        lotto_db = pd.concat([lotto_db, data_1])

 

아래와 같이 진행바 출력이 가능합니다. 다만, python으로 실행 시에는 진행바가 업데이트되는데 ipython에서는 업데이트되지 않고 아래에 행이 생깁니다.

 

tqdm-진행바-출력결과-화면
tqdm-진행바-출력

 

2) tqdm옵션

tqdm은 다양한 옵션들을 제공하는데, desc와 mininterval 정도만 알면 됩니다. desc로 상태바 앞에 설명을 붙일 수 있고, mininterval을 통해 상태바가 업데이트 되는 주기를 지정할 수 있습니다. 디폴트는 0.1초입니다.

 

for i in tqdm(range(1,600), desc="lotto", mininterval=1):
    data_1=lotto(i)
    lotto_db = pd.concat([lotto_db,data_1])

 

 

3. 주피터 노트북에서는 tnrange로!

"lotto"라는 설명을 붙였고, 진행바 생성 주기가 느려진 것을 알 수 있습니다. python에서는 이 정도의 옵션만 알면 충분히 잘 사용할 수 있습니다. jupyter notebook에서는 더 이쁘게(?) 진행 바 생성이 가능합니다. tnrange를 통해서 jupyter notebook에서 상태바를 그리면 아래와 같이 더 이쁜 진행바가 출력됩니다. 위의 코드를 쥬피터 노트북에서 실행하면 아래와 같이 도표 형태의 상태바가 출력된다.

 

주피터-노트북-tqdm-결과
주피터-노트북-tqdm

 

더 많은 옵션과 사용방법이 궁금하다면 tqdm github페이지를 참조하는 것도 좋겠습니다. 오늘은 이렇게 파이썬에서 for문 진행바를 그려주는 tqdm 패키지에 대해서 알아보았습니다. for문을 감싸는 형태로 쉽게 호출해서 쓸 수 있다는 것이 굉장히 큰 장점입니다. 이제 어렵게 print문을 사용하지 말고, tqdm 패키지를 이용하시기 바랍니다.

  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기