[Python/파이썬] tqdm으로

이 기사에서 tqdm으로 루프의 진행 상황을 확인하는 방법코드를 실행한 후 오류는 없지만 Jupyter 노트북 화면의 별은 시간이 지나도 사라지지 않고 중지 버튼이 눌러지는 것이 걱정된다면 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)

Jupyter 노트북의 셀에서 !pip 설치 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(주파수, 지속 시간)은 신호음 빈도와 신호음 지속 시간이라는 두 가지 변수를 취하는 함수입니다.

주파수 범위는 37에서 32767까지이며 지속 시간은 톤의 지속 시간(ms)입니다. 1000ms는 1초이므로 1000을 바꾸면 신호음이 1초 동안 울립니다. 루프 외부에 경고음을 추가하면 루프 완료를 들을 수 있습니다. 예약된 시간이 경과한 후에도 톤이 재생되지 않으면 루프가 중간에 어긋나서 루프가 완료되지 않았을 수 있습니다.

신호음이 루프를 완료할 때까지 기다리는 대신 다른 작업(YouTube)을 하면서 시간을 보냅니다.