KalelPark's LAB

[CLEAN CODE] Clean Python, tqdm 활용하기 본문

Python/CLEAN CODE

[CLEAN CODE] Clean Python, tqdm 활용하기

kalelpark 2022. 12. 19. 17:13

tqdm이란?

         -  파이썬(Python)에서 반복문을 도는 경우, 진행 정도를 Progress Bar의 형태로 보여주는 것이 가능합니다.

             tqdm은 아랍어에서 파생된 언어로 taqadum의 축약형이며, 영어로는 Progress라는 뜻입니다.

https://github.com/tqdm/tqdm

 

GitHub - tqdm/tqdm: A Fast, Extensible Progress Bar for Python and CLI

A Fast, Extensible Progress Bar for Python and CLI - GitHub - tqdm/tqdm: A Fast, Extensible Progress Bar for Python and CLI

github.com

 

Baseline

         - 기본적으로, 순회가능한 객체를 첫 번째 인자로 넣어준 후, for문에 삽입하면 됩니다.

from tqdm import tqdm
import time
 
for i in tqdm(range(10)):
    time.sleep(1)

* 추가적으로, tqdm은 객체를 설정한 후, for문에서 활용하는 것이 가능합니다.

add Option

         - total : 전체 진행률

         - desc : 진행률 출력 문장

         - ncols : 진행률 출력 폭

         - ascii : 바 모양, 첫 문장은 반드시 공백이여야 함..!

         - leave : True 완료 시, 진행률 출력 남김..!

iterable = ["train", "valid", "inference"]
pbar = tqdm(iterable,
           total = len(iterable),          # 전체 진행률
           desc = "Description",           # 진행중 출력 문장
           ncols = 100,                    # 진행률 출력 폭
           ascii = " -",                   # 바 모양, 첫 문장은 반드시 공백이여야 함.!
           leave = True)                   # True 완료 시, 진행률 출력 남김
for c in pbar:
    pbar.set_description(f"Current - {c}")
    time.sleep(4)

EX>

* 이중 루프(Nested Loop)를 사용하는 경우

         - for문이 연속으로 두 개 이상 있는 경우를 Nested Loop라고 합니다.

         - 바깥쪽 루프에 대한 진행률은 위쪽 줄에 출력하고, 안쪽 루프에 대한 진행률은 그 아래에 출력하고자 합니다.

 

         - tqdm의 position 인자를 이용하여, 바깥 루프에 대한 position을 0 안쪽 루프에 대한 position은 1로 설정합니다.

         - 이때, 안쪽 루프가 왼료되면, 진행률 출력 부분은 지우기 위해 leave = False로 합니다.

for outer in tqdm([10, 20, 30, 40, 50], desc='outer', position=0, leave = True): ## 출력되는 라인을 나타내는 position을 0 으로 두고
    for inner in tqdm(range(outer), desc='inner', position=1, leave= False): ## 안쪽 루프의 진행률 출력은 그 아랫줄인 position = 1 로 설정하는 것이다.
        time.sleep(0.5)

 

Comments