본문 바로가기
프로그래밍/Python

Python ] 코드 실행 시간 ms 단위로 측정하기 + datetime 모듈 사용법

by eteo 2024. 6. 3.

 

 

 

 

 

1. time 모듈 사용하기

 

import time

start_time = time.time()
for i in range(1, 10000000):
    pass
end_time = time.time()

elapsed_time = (end_time - start_time) * 1000
print(f"start_time : {start_time}")
print(f"end_time : {end_time}")
print(f"elapsed_time : {elapsed_time} ms")

 

 

time 모듈은 아래와 같이 import하여 사용할 수 있고 현재시간을 초단위로 반환하는 time() 함수와 시간 지연을 생성하는 sleep() 함수가 많이 쓰인다.

import time

 

time 모듈에서 시간은 UNIX time을 기준으로 하는데, 이는 1970년 1월 1일 00:00:00 UTC 부터 시작하는 시간 체계이다. Epoch time 또는 POSIX time이라고도 부른다. 

 

time 모듈의 time() 함수 반환 값은 1970년 1월 1일 00:00:00 UTC 이후의 경과 시간을 초단위의 실수형으로 반환하며, 반환값의 정수 부분은 전체 초를 나타내고 소수부분은 마이크로초를 나타낸다.

 

따라서 시간 간격에 1000을 곱하면 ms 단위를 얻어낼 수있다.

 

 

 

 

 

2. datetime 모듈 사용하기

 

from datetime import datetime
import time

start_time = datetime.now()
time.sleep(61.5)
end_time = datetime.now()
elapsed_time = end_time - start_time

print(f"start_time : {start_time}")
print(f"end_time : {end_time}")
print(f"elapsed_time : {elapsed_time}")
print(f"elapsed_time : {elapsed_time.total_seconds()*1000} ms")

 

 

 

datetime 모듈은 연/월/일을 표현하는 date 클래스, 시/분/초를 표현하는 time 클래스, date와 time 클래스를 결합한 datetime 클래스가 있고 두 datetime의 차이를 표현하는 timedelta 클래스 등을 제공한다.

 

그 중에서도 가장 널리 사용되는게 datetime 클래스인데 패키지 이름인 datatime과 동일하기 때문에 아래와 같이 import 해서 사용할 수 있다.

from datetime import datetime

 

 

그리고 datetime 클래스에서도 가장 대표적인 메서드가 로컬 시간대의 현재 시간을 나타내는 datetime 객체를 반환하는 now() 메서드이다. 

 

그리고 datetime 클래스의 두 인스턴스 간에 수행되는 빼기 연산의 결과는 timedleta 클래스의 인스턴스가 되는데 timedelta 클래스에는 모든 속성을 초단위로 합한 결과를 반환하는 total_seconds() 메서드가 있다. total_seconds() 메서드의 반환값은 실수형으로, 이 값의 정수 부분은 초를 나타내고 실수 부분은 마이크로초를 나타낸다.

 

위의 예시에서도 두 시간의 간격을 timedelta로 구하고 total_seconds() 메서드로 모든 속성을 초 단위 실수형으로 변환한 뒤 1000을 곱해 ms 단위의 간격을 얻어내고 있다.

 

 

 

 

 

 

3. datetime 기본 사용 예시

 

from datetime import datetime, timedelta

# now() 메서드로 현재 날짜와 시간 객체 생성
now = datetime.now()
print("현재 날짜 및 시간:", now)

# strftime() 메서드로 현재 날짜와 시간을 문자열로 포매팅
formatted_now = now.strftime("%Y.%m.%d_%H%M%S")
print("포맷된 현재 날짜 및 시간:", formatted_now)

# 특정 날짜와 시간으로 datetime 객체 생성
some_day = datetime(2024, 5, 10, 15, 30)
print("특정 날짜 및 시간:", some_day)

# strptime() 메서드로 문자열에서 날짜와 시간 정보를 읽어 datetime 객체 생성
parsed_date = datetime.strptime("2024-05-10 15:30", "%Y-%m-%d %H:%M")
print("파싱된 날짜 및 시간:", parsed_date)

# timedelta로 시간 더하기
later_time = now + timedelta(weeks=2, days=1, hours=1)
print("2주, 1일, 1시간 후 날짜 및 시간:", later_time)

# 두 datetime 객체의 속성별의 차이 확인
time_diff = later_time - now
print("두 datetime 간 일 수 차이:", time_diff.days) # 15일
print("두 datetime 간 초 차이:", time_diff.seconds) # 1시간
print(f"두 datetime 간 전체 차이: {time_diff.total_seconds()} s")