콘텐츠로 건너뛰기

파이썬에서 'wait' 키워드를 활용한 대기 방법에 대해 쉽게 알아보기

CodeMDD.io

Python sleep(): 코드에 시간 지연 추가하기

time.sleep()을 사용하여 Python sleep() 호출 추가하기

Python은 프로그램을 일시 중지하는 기능을 내장하고 있습니다. ‘time’ 모듈에는 호출한 스레드의 실행을 중지할 수 있는 ‘sleep()’ 함수가 있습니다. 지정한 시간(초) 동안 호출을 일시 중단하는 데 사용할 수 있습니다.

아래는 ‘time.sleep()‘을 사용하는 예시입니다.

import time
time.sleep(3) # 3초 동안 일시 중지

이 코드를 콘솔에서 실행하면, REPL에서 새로운 명령을 입력하기 전에 지연이 발생합니다.

참고: Python 3.5에서는 개발자들이 ‘time.sleep()‘의 동작 방식을 약간 변경했습니다. 새로운 Python ‘sleep()’ 시스템 호출은 지정한 시간보다 적어도 해당 시간 동안 지속됩니다. 신호에 의해 sleep이 중단되더라도 해당 규칙이 적용됩니다. 신호가 예외를 발생시키는 경우에는 해당하지 않습니다.

Python의 ‘timeit’ 모듈을 사용하여 sleep이 지속되는 시간을 테스트해볼 수 있습니다.

Terminal window
$ python3 -m timeit -n 3 "import time; time.sleep(3)"
3 loops, best of 5: 3 sec per loop

여기에서 ‘timeit’ 모듈을 -n 매개변수와 함께 실행하여 명령문을 몇 번 실행할지 지정합니다. timeit이 명령문을 3번 실행하고, 가장 좋은 실행 시간이 예상대로 3초인 것을 확인할 수 있습니다.

timeit이 코드를 실행하는 기본 반복 횟수는 백만회입니다. 만약 위의 코드를 기본 -n으로 실행한다면, 1번 반복당 약 34일 동안 터미널이 멈출 것입니다. ‘timeit’ 모듈에는 명령 줄 옵션이 몇 가지 더 있으며, 공식 문서에서 확인할 수 있습니다.

실제적인 예시로, 시스템 관리자는 웹 사이트 중 하나가 다운되었을 때 알고 싶어합니다. 웹 사이트의 상태 코드를 정기적으로 확인할 수 있는 기능을 추가하고자 합니다. 이를 위해 다음과 같은 코드를 작성해봅시다.

import requests
import time
def check_website_status(url):
while True:
response = requests.get(url)
if response.status_code != 200:
print(f"Website {url} is down. Retrying in 5 seconds...")
time.sleep(5)
else:
print(f"Website {url} is up!")
break
url = "https:https://codemdd.io/www.example.com"
check_website_status(url)

이 예시에서는 ‘requests’ 모듈을 사용하여 웹 사이트의 상태 코드를 확인하고 있습니다. 상태 코드가 200이 아닌 경우, 웹 사이트가 다운된 것으로 판단하고 5초 동안 기다린 후 다시 확인합니다. 상태 코드가 200인 경우, 웹 사이트가 정상 작동 중이라고 판단하고 작업을 중단합니다.

이렇듯 Python의 ‘time.sleep()‘을 사용하면 프로그램의 실행을 지연시킬 수 있습니다. 이는 파일 업로드 및 다운로드, 그래픽 로드 및 화면에 그리기, 웹 API 호출 또는 데이터베이스 쿼리 사이의 일시 중지 등의 상황에서 유용하게 사용될 수 있습니다.