파이썬 코드 실행시간 측정

Python에서 코드 실행 속도를 측정하는 가장 간단하고 일반적인 방법은 time 모듈을 사용하는 것입니다. 다음은 time 모듈을 사용하여 코드 실행 시간을 측정하는 방법입니다.

방법 1: time 모듈 사용

import time

start_time = time.time()  # 시작 시간 기록

# 측정하고 싶은 코드
# 예: some_function()

end_time = time.time()  # 종료 시간 기록
elapsed_time = end_time - start_time  # 경과 시간 계산

print(f"Execution time: {elapsed_time} seconds")

방법 2: timeit 모듈 사용

작은 코드 조각의 실행 시간을 반복적으로 측정하고 평균을 내고 싶다면 timeit 모듈이 유용합니다. timeit은 여러 번 실행하여 평균 실행 시간을 측정합니다.
코드의 실행 시간을 측정하는 가장 간편한 방법으로 매직 명령어 %time과 %timeit을 사용할 수 있습니다.

import timeit

code_to_test = """
# 측정하고 싶은 코드
# 예: some_function()
"""

# timeit.timeit(stmt, setup, number)
# stmt: 실행할 코드, setup: 초기 설정 코드, number: 반복 횟수
execution_time = timeit.timeit(code_to_test, number=100)  # 코드를 100번 실행

print(f"Average execution time: {execution_time / 100} seconds")

방법 3: datetime 모듈 사용

datetime 모듈을 사용하여 좀 더 세밀한 시간 측정이 가능합니다.

from datetime import datetime

start_time = datetime.now()

# 측정하고 싶은 코드
# 예: some_function()

end_time = datetime.now()
elapsed_time = end_time - start_time

print(f"Execution time: {elapsed_time}")

이러한 측정 방법들은 코드의 실행 시간을 대략적으로 측정하는 데 사용됩니다.
시스템의 부하나 다른 요인에 따라 실행 시간이 다를 수 있습니다.
성능 최적화를 위한 더 복잡한 분석이 필요한 경우, cProfile, line_profiler 등의 프로파일링 도구를 사용하는 것이 좋습니다.


다음으로 Jupyter Notebook에서 코드의 실행 시간을 측정하는 가장 간편한 방법은
매직 명령어 %time과 %timeit 입니다.

한 줄의 코드에 대해 측정:

%time some_function()

셀 전체에 대해 측정:

%%time
# 측정하고 싶은 코드
some_function()

%timeit 매직 명령어: 코드를 여러 번 실행하여 평균 실행 시간을 측정합니다. 더 정확한 측정을 위해 사용됩니다.

cProfile은 Python의 표준 프로파일링 도구로, 프로그램의 다양한 부분이 얼마나 시간을 소비하는지 상세하게 분석할 수 있습니다.
사용 예시:

import cProfile

cProfile.run('some_function()')

line_profiler 사용:

line_profiler는 각 줄별로 실행 시간을 측정하여 보다 세밀한 분석을 제공합니다.
먼저 line_profiler를 설치해야 합니다:

pip install line_profiler

Jupyter Notebook에서 사용하기 위해서는 %lprun 매직 명령어를 사용합니다. 먼저, 프로파일링할 함수에 @profile 데코레이터를 추가해야 합니다.
사용 예시:

%load_ext line_profiler

%lprun -f some_function some_function()

%time과 %timeit은 간단하게 실행 시간을 측정하기에 유용하지만, 프로그램의 어느 부분이 병목이 되는지는 파악하기 어렵습니다.
cProfile과 line_profiler는 더 상세한 분석을 제공하지만, 사용법이 더 복잡하고 추가적인 설정이 필요할 수 있습니다.

Subscribe to Keun's Story newsletter and stay updated.

Don't miss anything. Get all the latest posts delivered straight to your inbox. It's free!
Great! Check your inbox and click the link to confirm your subscription.
Error! Please enter a valid email address!