2월 06, 2024

python time.sleep() 함수, 초 단위 sleep, 밀리세컨즈

 파이썬 sleep 함수에 대해서 알아보자. 

 

sleep 함수는 파이썬에서 프로그램을 일시정시한다, 즉 재운다 (sleep)이라는 의미를 가지고 있다. 

원하는 시간  후에 프로그램을 실행시키고 싶거나 thread에서 자주 사용되는 함수이다.

 

sleep 함수는 파이썬에서 프로그램을 일시정시한다, 즉 재운다 (sleep)이라는 의미를 가지고 있다. 

원하는 시간  후에 프로그램을 실행시키고 싶거나 thread에서 자주 사용되는 함수이다.

 

먼저 sleep 함수를 사용하기 위해서는 time library를 import 해주어야 한다.

import time

이후에 sleep 함수의 () 안에 정지하고자 하는 초를 써주면 된다.

 

그리고 datetime library를 통해 sleep 함수를 더 잘 알아볼 수 있다.

 

import datetime # 날짜 시간 출력을 위한 import
import time     # sleep 함수를 위한 import

print("#####test 시작#####")
now = datetime.datetime.now()
print("*show time before sleep:", now.strftime('%H:%M:%S')) # sleep 함수 사용 전 시간 출력

#sleep 함수 적용
time.sleep(5) # 5 초 딜레이

now = datetime.datetime.now()
print("*show time after sleep:", now.strftime('%H:%M:%S')) #sleep 함수 사용 후 시간 출력

위의 예시의 코드 실행 결과는 아래와 같다.




이런식으로 출력된 것을 볼 수 있다. 정확히 우리가 sleep 시켰던 5초동안 delay가 있었던 것을 알 수 있다. 


위에서는 5초 동안의 delay를 주기 위해서 time.sleep(5) 라는 식으로 적어주었지만,

time 함수가 꼭 정수로 1초,2초,3초... 만 가능한 것은 아니다.

time.sleep() 괄호 안에 들어가는 parameter는 정확히 말해 float 형태이기 때문에 0.1, 0.01 등과 같이 소수점이 있어도 parameter에 들어갈 수 있어, 정교한 작업이 가능하다. 

 

예시로 0.125초 만큼 sleep을 시켜보도록 하겠다.

참고로 밀리세컨즈 단위를 출력하기 위해서는 추가로 .%f 를 쓰고 소수점 단위를 지정해주면 된다.

import datetime
print(now.strftime('%H:%M:%S.%f')[:-3]) # 현재 시간 소수점 아래 3자리까지 출력

위와 같이 원하는 소수점 단위를 출력해주면 되며, 이를 사용하여 0.125초만큼 sleep을 시켜주고 실제 time이 0.125초만큼 차이가 나는지 살펴보도록 하자.

 

import datetime 
import time    

print() #여백을 위해..
print("##########test 시작##########")
now = datetime.datetime.now()
print("*show time before sleep:", now.strftime('%H:%M:%S.%f')[:-3]) # sleep 함수 사용 전 시간 출력

time.sleep(0.135) # 5 초 딜레이

now = datetime.datetime.now()
print("*show time after sleep:", now.strftime('%H:%M:%S.%f')[:-3]) # sleep 함수 사용 후 시간 출력
print()

이런식으로 0.125초 동안 sleep이 잘 된 것을 알 수 있다. 


time.sleep() 함수는 간단한 것처럼 보이지만 thread 등에서도 유용하게 활용될 수 있으니 잘 알아두도록 하자.