[Python/파이썬] tqdm으로 반복문 진행률 확인하기

이번 글에서는 tqdm을 활용해서 반복문의 진행률을 확인할 수 있는 방법에 대해서 알아봅시다. 코드를 실행시킨 후 오류는 안 뜨는데, 시간이 흘러도 주피터 노트북 화면의 별은 사라지지 않고 정지 버튼을 눌러야 하나 고민을 하셨다면, tqdm을 활용해보시는 것을 추천드립니다. tqdm을 활용하면 반복문의 진행률과 앞으로 반복문이 완료될 때까지 소요될 예상 시간도 한눈에 볼 수 있습니다.

 

(1-1) tqdm 라이브러리 설치하기

# tdqm 라이브러리 설치하기

!pip install tqdm

# 저는 이미 tqdm 라이브러리가 설치되어 있기 때문에 아래와 같은 결과를 확인할 수 있습니다.
# Requirement already satisfied: tqdm in c:\users\1\anaconda3\lib\site-packages (4.62.3)
# Requirement already satisfied: colorama in c:\users\1\anaconda3\lib\site-packages (from tqdm) (0.4.4)

주피터 노트북의 셀에 !pip install tqdm을 입력하고 실행시키면, tqdm 라이브러리를 간단하게 설치할 수 있습니다.

 

(1-2) tqdm 라이브러리를 활용하여 for문 진행률 확인하기

대표적인 반복문인 for문에 대해서 tqdm을 적용시켜봅시다. 

#######################
import time
from tqdm import tqdm
#######################

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

tqdm을 통해 몇번째 반복문이 현재 실행 중인지 확인할 수 있습니다. 또한 반복문이 실행되고 얼마나 시간이 흘렀는지, 그리고 앞으로 얼마나 지나야 반복문이 완료될 것 같은지 대략적으로 확인할 수 있습니다.

 

예정 소요 시간이 말도 안 되게 너무 길다면, for문을 효율적으로 짜는 것이나 다른 방식으로 비슷한 결과를 얻기 위해서는 어떻게 해야 할지 생각해보는 것이 좋겠습니다.

 

(2) winsound를 활용해서 코드 실행 완료 인지하기

tqdm을 활용해서 예정 소요 시간을 확인했는데 5분, 10분과 같이 애매하게 긴 시간이라면 어떻게 하시겠습니까? 반복문이 완료될 때까지 하염없이 기다리지 않고, 코드 실행이 완료되었음을 소리를 통해 확인할 수 있는 방법이 있습니다.

import time
from tqdm import tqdm
import winsound as sd

##############################################################
def beepsound():
    fr = 555    # range : 37 ~ 32767
    du = 1000     # 1000 ms ==1second
    sd.Beep(fr, du) # winsound.Beep(frequency, duration)
##############################################################

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

winsound.Beep(frequency, duration)는 2개의 변수(소리의 진동수, 소리의 길이)를 받는 함수입니다.

frequency의 범위는 37에서 32767까지이고, duration은 소리의 지속 시간으로 ms입니다. 1000ms가 1초이기 때문에, 1000을 대입하면 소리가 1초 동안 울리게 됩니다. 반복문 밖에 Beep을 추가하면, 반복문이 완료된 것을 소리를 통해 확인할 수 있습니다. 예정된 시간이 지났는데도 소리가 안 울렸다면, 중간에 반복문이 어긋나서 끝까지 실행이 안 된 경우일 수도 있겠네요.

 

Beep을 통해서 반복문이 완료될 때까지 기다리지 말고, 다른 업무(유튜브)를 하면서 알차게 시간을 보내봅시다.

반응형
  • 네이버 블로그 공유
  • 네이버 밴드 공유
  • 페이스북 공유
  • 카카오스토리 공유