오늘은 파이썬에서 time 모듈과 datetime 모듈을 이용하여 프로그램의 실행 시간 측정 능력을 확인하는 방법에 대해 알아보는 시간을 가져보자.
1. time 모듈을 이용한 시간 측정
Python에서 time 모듈을 사용하여 프로그램 실행 시간을 측정하려면 먼저 time 모듈을 가져와야 한다.
import time
측정하고 싶은 코드 위에 시작 시점의 시간을 저장하는 변수를 다음과 같이 선언한다.
start_time = time.time()
time 모듈에서 time() 함수는 Python의 내장 time 모듈에서 제공하는 함수 중 하나이다. 이 함수는 현재 시스템 시간을 부동 소수점 숫자로 반환한다. 일반적으로 "에포크(Unix epoch)"라고 불리는 시간 적도로 표시된다. 에포크는 1970년 1월 1일 00:00:00 UTC부터 경과한 초 단위 시간을 나타낸다.
위와 마찬가지로 실행 시간을 측정하고자 하는 코드가 끝난 뒤 그 아래 다음과 같이 time.time()의 반환값을 변수에 저장한다.
end_time = time.time()
예시 코드
import time
# 프로그램 실행 시작 시간 기록
start_time = time.time()
# 실행 코드 작성
for i in range(1, 1000000):
pass
# 프로그램 실행 종료 시간 기록
end_time = time.time()
# 실행 시간 계산
execution_time = end_time - start_time
# 실행 시간 출력
print(f"프로그램 실행 시간: {execution_time} 초")
프로그램 실행 시간: 0.02695941925048828 초
위의 예시 코드와 같이 start_time과 end_time이 구해지면 end_time - start_time을 하여 프로그램이 실행되는 동안 흘렀던 시간을 구할 수 있다.
2. datetime 모듈을 이용한 시간 측정
datetime 모듈을 통해서도 time 모듈과 했던 것처럼 프로그램 실행 시간을 측정할 수 있다.
datetime 모듈을 사용하려면 먼저 아래와 같이 datetime 모듈을 import 해주어야 한다.
import datetime
측정하고자 하는 프로그램이 시작하는 코드 바로 위에 아래와 같이 프로그램이 시작했을 때의 시간을 가져온다.
start_time = datetime.datetime.now()
datetime 모듈 안에 datetime 클래스가 있고 해당 클래스에 있는 now() 메서드는 현재 시스템의 날짜와 시간을 가져오는 역할을 한다. 이 메서드를 호출하면 현재 날짜와 시간을 datetime 객체로 반환한다.
그리고 프로그램이 종료되는 코드 바로 아래 아래와 같이 프로그램이 종료되었을 때의 시간을 가져온다.
end_time = datetime.datetime.now()
start_time과 end_time이 모두 구해졌다면 다음과 같이 end_time - start_time을 연산을 하여 프로그램이 실행되던 동안 흘렀던 시간을 가져올 수 있다.
execution_time = end_time - start_time
예시 코드
import datetime
# 프로그램 실행 시작 시간 기록
start_time = datetime.datetime.now()
# 실행 코드 작성
for i in range(1, 1000000):
pass
# 프로그램 실행 종료 시간 기록
end_time = datetime.datetime.now()
# 실행 시간 계산
execution_time = end_time - start_time
# 실행 시간 출력
print(f"프로그램 실행 시간: {execution_time}")
프로그램 실행 시간: 0:00:00.035903
사용 방법은 첫 번째, time 모듈에서 사용했던 방법 마찬가지로 측정하고자 하는 프로그램의 코드 바로 위에 시작 시간을 저장하고 프로그램이 종료되는 코드 아래 종료 시간을 저장하여 종료 시간 - 시작 시간을 계산하여 프로그램이 실행되던 동안 흘렀던 시간을 구할 수 있다.
3. 마무리
time.time()과 datetime.datetime.now()은 모두 현재 시각을 가져오는 함수이지만 몇 가지 중요한 차이점이 있다.
1. 반환 형식
• time.time()
현재 시각을 에포크(Unix epoch)로부터 경과한 초 단위의 부동 소수점 숫자로 반환한다. 이 값을 소수점 이하의 세밀한 시간 정보를 포함하며, 대게 사용자아게 읽기 어렵다는 점이 있다.
• datetime.datetime.now()
현재 시각을 datetime 객체로 반환한다. 이 객체는 년, 월, 일, 시, 분, 초, 마이크로초 등의 시간 정보를 손쉽게 다룰 수 있도록 제공한다.
2. 사용 목적
• time.time()
주로 시간 간격을 측정하고 시간 경과를 계산하는 데 사용된다.
• datetime.datetime.now()
날짜와 시간을 조작하고 형식화하여 표시하는 데 사용된다.
3. 편의성
• time.time()
보다 낮은 수준의 시간 정보를 반환하므로, 사용자 정의 형식으로 출력하거나 다른 날짜와 시간을 연산하기 위해서는 추가 작업이 필요하다.
• datetime.datetime.now()
더 다양한 형식의 날짜와 시간 정보를 다룰 수 있다. 예를 들어, 특정 형식으로 날짜와 시간을 문자열로 출력하거나, 날짜와 시간을 더하고 빼는 등의 작업을 더 쉽게 수행할 수 있다.
위와 같은 이유들로 선택은 사용 사례에 따라 다르다. 시간 간격 또는 시간 경과를 계산하려면 time.time()을 사용하고, 날짜와 시간을 더 자세하게 다루거나 형식화하려면 datetime.datetime.now()를 사용하는 것이 좋다.