[Python] 파이썬 시간 측정 방법 | 시간 포맷팅

파이썬으로 코드를 작성하다 보면 종종 코드의 실행시간을 알고 싶을때가 있습니다.

이때 유용한 파이썬 모듈이 있는데요. 바로 time 모듈입니다.

파이썬 시간 측정

파이썬의 time 모듈에 내제 되어있는 함수를 사용하면 시간을 기록할 수 있습니다.

먼저, time 모듈을 import 해줍니다.

import time

이제 .time() 이라는 함수를 사용하여 함수가 실행된 순간의 시간을 알 수 있습니다. time 모듈 공식 설명에 따르면 이 함수의 반환 값은 “에포크 이후 초를 나타내는 시간을 부동 소수점 숫자로 반환” 한다 라고 하네요.

쉽게 말해 함수를 쓴 시점 기준, 초 단위의 시간을 알 수 있다는 것입니다.

예시로, 저는 0부터 99 까지 숫자의 합을 구하는 코드를 작성해 보았습니다.

잘못된 예시
잘못된 예시

보시다시피 4950은 0 ~ 99까지의 합이고, 그 다음 줄에 보이는 1691591685.399114 숫자가 time.time() 함수의 반환값입니다.

당연히 4950이라는 값을 구하는데 1691591685.399114초 만큼의 시간이 흐르지 않았기 때문에 올바른 실행시간 측정이 아닙니다.

흔히들 하시는 실수인데 time.time()에포크 이후의 경과된 시간을 초로 나타내 주는 것입니다. 협정 세계시 기준 경과된 시간을 초로 나타낸 것이기 때문에 위 예시처럼 사용해서는 실행 시간을 측정할 수 없습니다.

올바른 예시
올바른 예시

때문에 이렇게 시간 측정이 시작 되었으면 하는 라인에 time.time()을 쓰고 변수(startTime)에 저장해준후 측정이 끝나는 라인에 time.time()의 값을 다시 다른 변수(endTime)에 저장해준 뒤 그 차이를 계산 했을때 결과값이 바로 코드 실행 시간인 것입니다.

0.00002 초 만큼의 시간이 걸렸네요.

print(f"{endTime - startTime:.5f} sec")
터미널 아웃풋

print() 함수의 출력값을 포맷팅 해서 소수 5번째 자리까지만(:.5f) 출력하도록 해줄 수 도 있습니다.

시:분:초 형식으로 포맷팅하기

time 모듈의 시간 형식을 초 단위 뿐 아니라 시간, 분, 초 단위로 나타내고 싶으시다면 datetime 모듈을 사용하시면 됩니다.

import datetime

datetime 모듈에는 timedelta 라는 객체가 있는데 time 모듈을 통해 구한 실행시간을 넣어주기만 하면 됩니다.

duration = endTime-startTime # 실행 시간 (초)

datetime.timedelta(seconds=duration) 

time.time()을 통해 구한 duration 변수를 timedelta 객체 seconds에 넣어줍니다.

datetime

이렇게 편리하게 timedelta 객체는 초 단위의 시간을 의미하는 숫자를 넣어주면 자동으로 계산해서 시:분:초 형식으로 출력해준답니다.

또 다른 예시:

datetime 1000초

1000을 넣으면 0:16:40 (16분 40초)로 나오는 것을 확인할 수 있습니다.

결론

본 포스팅에서는 파이썬 time 모듈의 time() 함수와 dateTime 모듈의 timedelta() 객체에 대해 알아보았습니다.

코드의 실행시간을 단순히 초 단위로 측정하고 싶으시다면 time.time()을 이용하시면 되고 시:분:초 형식으로 포맷팅 하시고 싶으시다면 datetime.timedelta()를 사용하시면 될 거 같습니다.

답글 남기기