콘텐츠로 건너뛰기

파이썬에서 딜레이를 사용하는 방법은?

[

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

링크를 눌러서 이 튜토리얼의 전체 내용을 확인할 수 있습니다.

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

time.sleep()을 사용하는 방법 예시입니다.

import time
time.sleep(3) # 3초 동안 대기

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

참고: Python 3.5에서 개발자들은 time.sleep()의 동작을 약간 변경했습니다. 새로운 Python sleep() 시스템 호출은 신호에 의해 방해되더라도 스레드를 지정한 시간 동안 유지합니다. 그러나 신호 자체가 예외를 일으키는 경우에는 해당되지 않습니다.

Python의 timeit 모듈을 사용하여 대기 시간을 테스트할 수 있습니다.

Terminal window
$ python3 -m timeit -n 3 "import time; time.sleep(3)"
3회 반복: 3 소요

위와 같이 timeit 모듈을 -n 매개변수와 함께 실행하면 timeit은 뒤에 오는 문을 실행할 횟수를 지정합니다. 위의 결과에서 timeit은 문을 3번 실행하고 가장 빠른 실행 시간은 3초인 것을 확인할 수 있습니다.

timeit가 실행할 코드의 기본 반복 횟수는 100만입니다. 위의 코드를 기본 -n으로 실행한다면 1회 반복 당 3초씩이므로 터미널이 약 34일 동안 먹통됩니다! timeit 모듈은 문서에서 확인할 수 있는 다양한 다른 명령행 옵션을 가지고 있습니다.

이제 약간 더 현실적인 예시를 만들어 봅시다. 시스템 관리자는 자신의 웹 사이트 중 하나가 다운되면 알고 싶어합니다. 정기적으로 웹 사이트의 상태 코드를 확인할 수 있도록 만들어야 합니다. 그러나 너무 빈번하게 접속하면 웹 서버에 부하를 주게 됩니다. 이 문제를 해결하기 위해 time.sleep()을 사용하여 웹 사이트 간의 대기 시간을 추가하는 방법을 알아보겠습니다.

Python 스크립트를 작성하여 웹 사이트 간의 대기 시간을 구현해 봅시다. 프로젝트 디렉토리에 check_website.py라는 파일을 만들고 다음 코드를 작성합니다.

import requests
import time
websites = [
"https://www.google.com",
"https://www.apple.com",
"https://www.microsoft.com"
]
for website in websites:
response = requests.get(website)
if response.status_code == 200:
print(f"{website} is up!")
else:
print(f"{website} is down!")
time.sleep(5) # 5초 동안 대기

위의 코드는 requests 모듈을 사용하여 세 가지 웹 사이트의 상태를 확인합니다. 각 웹 사이트에 대한 요청을 보내고 응답 상태 코드를 확인한 후 해당 웹 사이트가 작동 중인지 여부를 출력합니다. 그런 다음 time.sleep(5)를 사용하여 다음 웹 사이트의 요청 전에 5초 동안 대기합니다.

이제 check_website.py를 실행해 봅시다.

Terminal window
$ python check_website.py

출력은 각 웹 사이트의 상태에 따라 달라질 것입니다. 웹 사이트가 작동 중인 경우 “https://www.google.com is up!”과 같은 메시지가 출력되고, 그렇지 않은 경우 “https://www.google.com is down!”과 같은 메시지가 출력됩니다. 그런 다음 각 웹 사이트 요청 전에 5초 대기합니다.

위의 예제는 웹 사이트 상태 확인에 활용될 수 있는 대기 시간을 추가하는 방법을 보여줍니다. 웹 사이트 확인 이외에도 파일 업로드 또는 다운로드, 그래픽 로드 또는 화면에 그리기와 같은 다양한 상황에서 time.sleep() 호출을 사용하여 프로그램을 대기 상태로 만들 수 있습니다.

Python time.sleep() 함수는 프로그램이 일시 중단되는 동안 다른 작업을 수행할 수 있게 해줍니다. 이것은 특히 대기해야 하는 상황에서 유용합니다. 그러나 time.sleep() 함수를 사용할 때 주의해야 할 몇 가지 사항이 있습니다.

  • time.sleep() 호출은 현재 스레드를 대기 상태로 만듭니다. 스레드를 중지하지 않고 다른 작업을 수행하는 방법에는 다른 접근 방식이 필요할 수 있습니다.
  • time.sleep()에 전달된 시간 값은 초 단위로 지정됩니다. 정밀한 제어가 필요한 경우 다른 방법을 사용해야 할 수 있습니다.
  • time.sleep()은 현재 스레드가 일시 중단된 후 다시 실행되기를 기다립니다. 다른 스레드와의 동기화가 필요한 경우 다른 동기화 기법을 사용해야 할 수 있습니다.

이제 Python에서 time.sleep() 함수를 사용하여 코드에 대기 시간을 추가하는 방법에 대해 알게 되었습니다. 이것은 프로그램의 동작을 제어하거나 특정 작업을 지연시키는 데 사용될 수 있습니다. 자신의 프로그램에 time.sleep()을 추가하여 필요한 지연을 구현하고, 프로그램의 동작을 테스트해 보세요.