본문 바로가기

카테고리 없음

파이썬 반복문 어디까지 진행되었는지 표시하기: tqdm 라이브러리

반복문을 돌리면 작업이 어디까지 진행된 건지, 되고는 있는 건지 궁금할 때가 많이 있습니다. 주피터 노트북 화면을 바라보며 반복문을 돌린 셀의 별표가 사라지길 계속 기다리기도 조금 답답합니다. 이럴 때 진행 상황을 확인하는 가장 쉬운 방법은 반복문 중간에 print 찍도록 코드를 작성하는 것입니다. 하지만 이 방법은 직관적으로 한눈에 진행 상황을 파악하기에는 무리가 있습니다. 

 

파이썬에는 이럴 때 사용할 수 있는 tqdm 라이브러리가 있습니다. 이 라이브러리를 이용하면 진행 상황을 Progress Bar 형태로 한눈에 확인할 수 있습니다.

 

tqdm 라이브러리 설치 

Jupyter NoteBook을 열고 빈 셀에 다음의 설치 코드를 입력하고 실행시키면 됩니다.

 

!pip install tqdm

# 이미 설치가 되어있다면 최신 버전으로 업그레이드를 할 수도 있습니다.
# !pip install tqdm --upgrade

 

기본 사용법 

반복 가능한(iterable) 대상이라면 어느 것이든 tqdm 함수 넣고 실행하면 됩니다. 

 

import time
from tqdm import tqdm

for i in tqdm(range(10)):
    time.sleep(0.1)

 

 

리스트도 가능합니다. desc를 이용하여 설명을 추가할 수도 있습니다. 

 

empty_list = []
for word in tqdm(['apple', 'ball', 'cat', 'doll', 'egg'], desc='iterate list'):
    time.sleep(0.1)
    empty_list.append(word)

 

 

반복문 밖에서 별도의 tqdm 인스턴스를 만들어서 실행시킬 수도 있습니다.  

 

pbar = tqdm(['apple', 'ball', 'cat', 'doll', 'egg'])
for word in pbar :
    time.sleep(0.1)
    pbar.set_description(f'Processing {word}')
    empty_list.append(word)

 

 

중첩된 반복문에서 사용하기 

중첩된(nested) 반복문에서도 사용이 가능합니다.  

 

for i in tqdm(range(2), desc='첫 번째 반복문'):
    for j in tqdm(range(3), desc='두 번째 반복문'):
        time.sleep(0.1)

 

 

 

주피터 노트북에는 tqdm을 조금 더 이쁘게 쓸 수 있다?!

주피터 노트북을 위한 tqdm submodule이 있습니다. 이것을 사용해서 진행상태바를 그리면 훨씬 보기에 좋습니다.

 

from tqdm import notebook
import time 

for i in notebook.tqdm(range(100), desc='iterate range 100'):
    time.sleep(0.01)

 

 

 

 

- 이 글은 아나콘다(Anaconda3)가 설치된  주피터 노트북에서 작성되었습니다.