한글로 쓰면 큰일나요. tqdm tqdm

업데이트:

그래서 대체 얼마나 진행된거야

  • for문과 같은 반복문이 오랜 시간동안 작동하다보면, 이게 제대로 되고 있는건지 혹은 얼마나 걸리는건지 궁금한 경우가 많다.
    • 특히 크롤러를 작동시킬 때 이런 경우가 많았다.
  • 위의 문제점을 해결하기 위해 for문 끝에 몇 번 진행되었는지 표기하곤 했다.
    • 예컨대 이런 식?
print('반복문 시작')
for i in range(5):
    print('{}번째 완료'.format(i+1))
print('전체 완료')

이미지

  • 이런 방식의 가장 큰 문제는, 반복 횟수가 많아지면 그만큼 출력창이 길어진다는 점이다.

tqdm 라이브러리

  • 공부를 하다가, tqdm 라이브러리를 알게 되었다.
  • 예전에 진행바 라이브러리가 있지 않을까 생각만 하고 찾아보지는 않았는데, 역시 파이썬엔 없는 게 없다…
  • 사용법은 매우 간단하다.

1. 설치

  • 일단 터미널에서 설치를 해줘야한다.
pip install tqdm

2. 라이브러리 임포트

from tqdm import tqdm_notebook

3. for문에 사용하기

  • time.sleep과 for문을 통해 어떻게 작동하는지 간단하게 알아볼 수 있다.
import time
for i in tqdm_notebook(range(5)):
    time.sleep(3)

image

  • 위와 같이 얼마나 진행되는지 진행바를 통해 직관적으로 확인할 수 있다.

4. 진행바의 설명 추가

  • 진행바의 왼쪽에 어떤 진행바인지 설명을 추가할 수 있다.
    • desc 옵션을 사용하면 된다.
for i in tqdm_notebook(range(5), desc='진행'):
    time.sleep(1)

image

5. 진행바 업데이트 주기

  • 진행바가 너무 빠르게 업데이트 된다고 느낀다면, 이 주기를 설정할 수 있다.
    • mininterval 옵션을 사용할 수 있고, default는 0.1초다.
for i in tqdm_notebook(range(300), mininterval=1):
  time.sleep(0.01)

image

for i in tqdm_notebook(range(300), mininterval=0.01):
  time.sleep(0.01)

image

  • 둘의 차이를 보면 어떤 옵션인지 한 눈에 알 수 있다.

6. for문이 여러개일 때

  • 반복문 안에 반복문이 있는 경우가 있다.
  • 이런 경우에, 각 반복문에 tqdm을 적용하여 진행바를 띄울 수 있다.
for i in tqdm_notebook(range(3), desc='전체'):
    time.sleep(0.2)
    for n in tqdm(range(5), desc='{}번째'.format(i+1)):
        time.sleep(0.2)

image


댓글남기기