python_tqdm

Python 진행률 표시(Progress Bar) 구현하기: tqdm 사용법 완벽 가이드

긴 작업 시간을 한눈에! Python tqdm으로 진행률 표시하기

요약

데이터 분석, 웹 크롤링, 머신러닝, 딥러닝 모델 학습을 하다 보면 몇 초 만에 끝나지 않는 작업을 자주 만나게 됩니다.

이때 프로그램이 정상적으로 실행되고 있는지, 얼마나 진행되었는지, 언제 끝날지 알 수 없다면 답답할 수밖에 없습니다.

Python의 대표적인 진행률 표시(Progress Bar) 라이브러리인 tqdm은 단 한 줄의 코드만 추가해도 현재 진행률, 처리 속도, 예상 남은 시간(ETA)을 실시간으로 보여줍니다.

이번 글에서는 tqdm의 설치 방법부터 반복문, pandas, PyTorch, Jupyter Notebook에서의 활용법까지 실전 예제와 함께 자세히 알아보겠습니다.

tqdm이란?

tqdm은 Python에서 가장 널리 사용되는 진행률 표시(Progress Bar) 라이브러리입니다.

일반적인 반복문은 현재 몇 % 진행되었는지 확인하기 어렵습니다.

예를 들어 다음 코드를 실행하면 프로그램이 동작하고 있다는 사실만 알 수 있습니다.

import time

for i in range(100):
    time.sleep(0.1)

하지만 tqdm을 사용하면 다음과 같이 진행 상황을 시각적으로 확인할 수 있습니다.

100%|████████████████████| 100/100 [00:10<00:00, 9.98it/s]

현재 진행률, 처리 속도, 예상 완료 시간까지 한 번에 표시됩니다.


tqdm 설치하기

pip 명령어로 간단하게 설치할 수 있습니다.

pip install tqdm

설치가 완료되면 바로 사용할 수 있습니다.


가장 기본적인 사용법

from tqdm import tqdm
import time

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

실행하면 터미널에 Progress Bar가 표시됩니다.

45%|████████▉          | 45/100 [00:04<00:05, 9.97it/s]

리스트에 Progress Bar 적용하기

from tqdm import tqdm

numbers = [1, 2, 3, 4, 5]

for num in tqdm(numbers):
    print(num)

range뿐 아니라 리스트, 튜플, 딕셔너리, Generator 등 대부분의 반복 가능한 객체에 사용할 수 있습니다.


작업 이름 표시하기

현재 어떤 작업을 수행 중인지 표시하고 싶다면 desc 옵션을 사용합니다.

from tqdm import tqdm
import time

for i in tqdm(range(100), desc="데이터 처리 중"):
    time.sleep(0.05)

출력 예시

데이터 처리 중: 100%|██████████| 100/100

PyTorch 딥러닝 학습에 활용하기

딥러닝 모델 학습 시 tqdm은 거의 필수 도구라고 할 수 있습니다.

from tqdm import tqdm

for epoch in range(10):

    for images, labels in tqdm(
        train_loader,
        desc=f"Epoch {epoch+1}"
    ):
        # 학습 코드
        pass

출력 예시

Epoch 1: 100%|██████████| 500/500
Epoch 2: 100%|██████████| 500/500

현재 Epoch와 Batch 진행 상황을 쉽게 파악할 수 있습니다.


pandas와 함께 사용하기

대용량 데이터 처리에서도 매우 유용합니다.

import pandas as pd
from tqdm import tqdm
import time

tqdm.pandas()

df = pd.DataFrame({
    "text": [
        "Hello World",
        "Python tqdm tutorial",
        "Artificial Intelligence",
        "Deep Learning",
        "Progress Bar Example"
    ]
})

def calculate_length(text):
    time.sleep(1) 
    return len(text)

df["length"] = df["text"].progress_apply(calculate_length)

print(df)

일반적인 apply() 대신 progress_apply()를 사용하면 진행률이 표시됩니다.


중첩 Progress Bar 사용하기

Epoch와 Batch처럼 이중 반복문이 있는 경우에도 사용할 수 있습니다.

from tqdm import tqdm
import time

for epoch in tqdm(range(5), desc="Epoch"):
    for batch in tqdm(
        range(100),
        desc="Batch",
        leave=False
    ):
        time.sleep(0.01)

딥러닝 학습 과정을 더욱 직관적으로 확인할 수 있습니다.


수동으로 Progress Bar 업데이트하기

반복문이 없는 작업에서도 사용할 수 있습니다.

from tqdm import tqdm
import time

pbar = tqdm(total=100)

for i in range(100):
    time.sleep(0.05)
    pbar.update(1)

pbar.close()

파일 다운로드, 데이터 수집, API 호출 작업에 자주 활용됩니다.


tqdm을 사용하는 이유

tqdm이 많은 개발자에게 사랑받는 이유는 다음과 같습니다.

✅ 단 한 줄로 적용 가능

for i in range(100):

for i in tqdm(range(100)):

✅ 현재 진행률 확인 가능

75%

✅ 예상 남은 시간 제공

ETA: 00:03

✅ 처리 속도 확인 가능

100it/s

✅ 데이터 분석과 딥러닝 프로젝트에 필수

실행 시간이 긴 작업의 상태를 실시간으로 확인할 수 있습니다.


마무리

tqdm은 Python 개발자의 생산성을 크게 향상시켜 주는 라이브러리입니다.

특히 데이터 분석, 웹 크롤링, 머신러닝, 딥러닝 프로젝트처럼 실행 시간이 긴 작업에서는 현재 진행 상황을 확인할 수 있다는 점만으로도 큰 가치를 제공합니다.

기존 코드에 단 한 줄만 추가하면 Progress Bar, 처리 속도, 예상 완료 시간을 확인할 수 있으므로 아직 사용해 보지 않았다면 지금 바로 적용해 보시기 바랍니다.

“기다림은 지루하지만, 진행 상황이 보이면 훨씬 편해진다.”

tqdm은 Python에서 가장 쉽고 강력하게 진행률 표시를 구현하는 방법입니다.

댓글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다