파이썬 for문 진행바 패키지, tqdm 설치 및 사용법은?!

2021. 6. 16. 07:40

파이썬에는 이미 개발된 유용한 패키지들이 많아 프로그래밍을 쉽게 할 수 있다. 데이터를 수집하는 API의 경우 일별로 데이터를 가져오는 경우가 많다. 이 때 for문을 돌려놓으면 잘 실행되는지 아닌지 알 수가 없다. 그래서 print문으로 중간중간 상태를 찍어보고는 했다. 하지만, 최근에 진행바를 만들어주는 파이썬 패키지를 알게 되었다.

오늘은 for문의 진행바를 출력해주는 tqdm 패키지에 대해서 알아보도록 하겠다.

 

 

tqdm

 

 

파이썬 진행바가 필요한 경우는 많겠지만, 예전에 로또 당첨결과를 수집한 코드를 가지고 적용해 보았다. 로또 당첨결과는 차수별로 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.")

 

 

print문으로 진도율 출력

 

 

어려운 일은 아니지만 귀찮고 시간이 소요되는 일이다. 하지만, 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 진행바 출력

 

 

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])

 

ipython 진행바 출력

 

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

"lotto"라는 설명을 붙였고, 진행바 생성주기가 느려진 것을 알 수 있다. python에서는 이 정도의 옵션만 알면 충분히 잘 사용할 수 있다. jupyter notebook에서는 더 이쁘게(?) 진행바 생성이 가능했다. tnrange를 통해서 jupyter notebook에서 상태바를 그리면 아래와 같이 더 이쁜 진행바 출력이 가능했다.

위의 코드를 쥬피터 노특북에서 실행하면 아래와 같이 도표 형태의 상태바가 출력된다.

 

 

주피터노트북 tqdm

 

 

더 많은 옵션과 사용방법이 궁금하다면 tqdm github페이지를 참조하는 것도 좋을 듯 하다. 링크 주소는 아래와 같다.
(참조: https://github.com/tqdm/tqdm )

 

 

오늘은 이렇게 파이썬에서 for문 진행바를 그려주는 tqdm 패키지에 대해서 알아보았다. for문을 감싸는 형태로 쉽게 호출해서 쓸 수 있다는 것이 굉장히 큰 장점이다. 이제 어렵게 print문을 사용하지 말고, tqdm 패키지를 이용하기 바란다.

댓글()