<개인공부>/[Python]

[python] 파이썬 sleep 함수 사용법 (일시정지)

사용자 BlockDMask 2021. 10. 8. 21:00
반응형

안녕하세요. BlockDMask 입니다.
오늘은 파이썬에서 프로그램을 재우는, 일시정지하는 함수 sleep() 에 대해서 이야기해보려 합니다.
주로 쓰레드 예제 관련이나, 특정 시간 후에 프로그램을 실행시키려 할때 사용하곤 하는 함수 입니다.

<목차>
1. sleep 함수 설명
2. sleep 함수 예제

 

1. 파이썬 sleep 함수 설명


sleep 함수는 time 라이브러리, 모듈에 존재하는 함수 입니다.

import time 을 이용해서 time 라이브러리를 가지고 오고

time.sleep(초)

이런식으로 멈추고자하는 시간(초)를 입력하면 그 시간만큼 프로그램이 일시정지 됩니다.
입력한 시간이 지난 다음바로 그 다음줄 부터 프로그램이 다시 시작 됩니다.

좀 더 정확하게 보면
time.sleep(float 초) 입니다. 
매개변수를 float 타입으로 받기 때문에,
1초 2초 뿐만 아니라 소수점 0.1초 0.2초 0.01초 등이 가능합니다.

 

 

2. 파이썬 sleep 함수 예제


예제에서 시간을 볼 수 있도록 현재 시간을 출력하도록 datetime 모듈에 있는 strftime 함수를 사용했습니다.
time 모듈에 있는 strftime 함수를 사용해도 동일한 동작을 하지만,
time.strftime 에는 밀리초를 출력하는 %f 포멧이
없기 때문에 datetime 모듈에 있는 strftime 을 사용했습니다.

참고 공식 문서 : [datetime 바로가기] [time 바로가기]

import datetime # 현재 시간 출력용
import time     # sleep 함수 사용

# 1. 초 단위 테스트
print('-' * 30)
now = datetime.datetime.now()
print(now.strftime('%H:%M:%S')) # 현재 시간 출력

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

now = datetime.datetime.now()
print(now.strftime('%H:%M:%S'))

time.sleep(10) # 10 초 딜레이

print(datetime.datetime.now().strftime('%H:%M:%S'))


# 2. 밀리초 테스트
print('-' * 30)
print(datetime.datetime.now().strftime('%H:%M:%S.%f')[:-3])

time.sleep(0.5) # 0.5 초 딜레이

print(datetime.datetime.now().strftime('%H:%M:%S.%f')[:-3]) # 밀리초 3자리까지만 출력

time.sleep(0.06) # 0.06 초 딜레이

now = datetime.datetime.now()
print(now.strftime('%H:%M:%S.%f')[:-3])

1) time.sleep(초)
09:13:18 에서 time.sleep(5)를 통해서 5초의 시간이 지난 뒤에
09:13:23 이 되었습니다.
이 상태에서 time.sleep(10) 을 통해서 프로그램을 10초 멈추고 다시 실행시켰기 때문에
09:13:33 이 되었습니다.

2) time.sleep(소수점)

현재시간 09:13:33.835 에서
time.sleep(0.5) 를 통해서 0.5초의 딜레이를 주었습니다.
09:13:34.350 의 시간이 되었습니다. (0.015초의 오차가 있네요)

그 후에 time.sleep(0.06) 을 통해서 0.06초 프로그램을 멈추고, 그후에 시간을 출력했는데
09:13:34.425 시간이 되어 0.06초가 딱 지난게 아니라 0.075초가 지났네요. (0.015 오차)

프로그램을 멈추는 시간은 0.06초, 0.5초 대로 딱 정한 시간 만큼 이겠지만,
현재시간을 포메팅(now.strftime('%H:%M:%S.%f')) 및 출력 하는 과정에서의 딜레이 발생으로
이런 오차(0.015초)가 발생한것으로 보입니다.

 

** datetime에서 현재시간을 가지고 오는 함수는 datetime.datetime.now() 입니다.
이걸 변수에 담아서 사용해도되고 바로 사용해도됩니다.

 

이렇게 오늘은 프로그램을 멈추는 sleep 함수에 대해서 알아보았습니다.
감사합니다.

반응형