변혁적인 삶

[Python | 유틸리티] tqdm으로 프로그래스 바를 추가해보자! 본문

프로그래밍/Python

[Python | 유틸리티] tqdm으로 프로그래스 바를 추가해보자!

revolutionarylife 2024. 11. 17. 14:35
반응형

📊 [Python | 유틸리티] tqdm으로 프로그래스 바를 추가해보자!

목차

  • tqdm이란?
  • tqdm 설치 방법
  • 기본 사용법
  • 커스터마이징
  • 실제 활용 사례
  • 마무리

tqdm이란?

tqdm은 Python에서 프로그래스 바(progress bar)를 쉽게 추가할 수 있도록 도와주는 라이브러리입니다. 반복문 실행 상태를 한눈에 확인할 수 있도록 직관적인 인터페이스를 제공하며, 터미널과 GUI에서 모두 사용 가능합니다. tqdm의 이름은 아랍어로 '진보'를 뜻한다고 합니다.


tqdm 설치 방법

tqdm 설치는 매우 간단합니다. 아래 명령어를 사용해서 설치해 줍니다:

pip install tqdm

설치가 완료되면 아래 명령어로 설치가 정상적으로 되었는지 확인할 수 있습니다:

python -m tqdm --version

기본 사용법

사용법은 간단합니다.

단순히 반복문에 tqdm을 추가하면 진행 상태를 확인할 수 있습니다. 간단한 예제를 보겠습니다:

from tqdm import tqdm
import time

# 반복문에 tqdm 추가
for i in tqdm(range(10)):
    time.sleep(0.1)  # 작업 시뮬레이션

실행하면 진행률과 남은 시간이 표시된 프로그래스 바가 출력됩니다.


커스터마이징

tqdm은 다양한 커스터마이징 옵션을 제공합니다. 아래 예제를 통해 메시지와 포맷을 커스터마이징해봅시다:

from tqdm import tqdm
import time

# tqdm 커스터마이징
for i in tqdm(range(10), desc="Processing", unit="iteration", ncols=80):
    time.sleep(0.2)

이 코드는 desc로 메시지를 설정하고, unit으로 단위를 정의하며, ncols로 프로그래스 바의 너비를 조정합니다.

출력 예시

Processing:   0%|                                           | 0/10 [00:00<?, ?iteration/s]
Processing:  10%|█████                                   | 1/10 [00:00<00:01,  8.82iteration/s]
Processing:  20%|██████████                              | 2/10 [00:00<00:01,  7.45iteration/s]
Processing:  30%|███████████████                         | 3/10 [00:00<00:01,  6.64iteration/s]
Processing:  40%|████████████████████                    | 4/10 [00:00<00:00,  6.16iteration/s]
Processing:  50%|█████████████████████████               | 5/10 [00:01<00:00,  5.86iteration/s]
Processing:  60%|██████████████████████████████          | 6/10 [00:01<00:00,  5.68iteration/s]
Processing:  70%|███████████████████████████████████     | 7/10 [00:01<00:00,  5.56iteration/s]
Processing:  80%|████████████████████████████████████████| 8/10 [00:01<00:00,  5.46iteration/s]
Processing:  90%|████████████████████████████████████████| 9/10 [00:01<00:00,  5.40iteration/s]
Processing: 100%|████████████████████████████████████████| 10/10 [00:01<00:00,  5.35iteration/s]

실제로는 한줄로 %가 계속 업데이트 되며 나옵니다.(다른 print구문이 없는 경우)


실제 활용 사례

다음은 파일 다운로드 시 진행 상태를 표시하는 실제 예제입니다:

import requests
from tqdm import tqdm

url = "https://example.com/largefile.zip"
response = requests.get(url, stream=True)

# 파일 다운로드 프로그래스 바
with open("largefile.zip", "wb") as f:
    total = int(response.headers.get('content-length', 0))
    with tqdm(total=total, unit="B", unit_scale=True, desc="Downloading") as pbar:
        for chunk in response.iter_content(chunk_size=1024):
            f.write(chunk)
            pbar.update(len(chunk))

이 코드는 큰 파일을 다운로드하면서 진행 상태를 보여줍니다. unit_scale=True는 단위를 자동 조정하여 보기 좋게 표시합니다.

출력 예시

Downloading:   0%|                                           | 0.00/1.00M [00:00<?, ?B/s]
Downloading:  20%|████████                                   | 0.20/1.00M [00:00<00:01, 700kB/s]
Downloading:  40%|████████████████                           | 0.40/1.00M [00:00<00:00, 800kB/s]
Downloading:  60%|████████████████████████                   | 0.60/1.00M [00:01<00:00, 850kB/s]
Downloading:  80%|████████████████████████████████           | 0.80/1.00M [00:01<00:00, 880kB/s]
Downloading: 100%|███████████████████████████████████████████| 1.00/1.00M [00:01<00:00, 900kB/s]

마무리

tqdm은 Python에서 작업의 진행 상황을 직관적으로 보여주는 강력한 도구입니다. 간단한 사용법과 다양한 커스터마이징 옵션 덕분에 데이터 처리, 다운로드, 반복 작업 등 여러 상황에서 활용도가 높습니다. 이번 글을 통해 tqdm을 이해하고, 프로젝트에 적용해보세요!🕒

반응형