Computer >> 컴퓨터 >  >> 프로그래밍 >> Python

파이썬 time.process_time() 함수로 프로세스 CPU 시간 측정하기

이 튜토리얼에서는 파이썬 time.process_time() 메서드의 개념과 실제 활용 방법을 알아보겠습니다.

time.process_time()이란?

time.process_time()은 현재 프로세스가 시작된 이후 소비한 시스템 CPU 시간과 사용자 CPU 시간의 합계를 초 단위의 부동 소수점(float) 값으로 반환하는 함수입니다.

이 함수의 중요한 특징은 다음과 같습니다.

  • 프로세스가 실제로 CPU를 사용한 시간만 측정합니다.
  • sleep() 등으로 대기한 시간은 포함되지 않습니다.
  • CPU 연산 위주의 코드 성능을 벤치마킹할 때 유용합니다.

기본 사용 예제

# time 모듈 임포트
import time

# 현재 프로세스의 CPU 시간 출력
print(time.process_time())

실행 결과

위 코드를 실행하면 환경에 따라 다음과 비슷한 결과가 출력됩니다.

1.171875

반환되는 값은 프로그램이 실행된 환경과 시점에 따라 달라질 수 있습니다.

코드 실행 시간 측정하기

이번에는 특정 작업(예: 주어진 범위의 숫자 출력)에 걸리는 CPU 처리 시간을 측정해 보겠습니다. 아래 코드를 이해한 후 직접 실행해 보세요.

# time 모듈 임포트
import time

def print_numbers(cap):
    for i in range(cap):
        print(i, end=' ')

if __name__ == '__main__':
    number = 1000
    # 작업 시작 전 시간 기록
    start_time = time.process_time()
    print_numbers(number)
    # 작업 종료 후 시간 기록
    end_time = time.process_time()
    print()
    print("Process time", end_time - start_time)

실행 결과

위 코드를 실행하면 0부터 999까지의 숫자가 공백으로 구분되어 한 줄로 출력되고, 마지막에 처리 시간이 표시됩니다. (출력이 길어 일부 생략합니다.)

0 1 2 3 4 5 ... 997 998 999
Process time 0.234375

여기서 핵심 로직은 다음 세 단계입니다.

  1. 작업 시작 직전에 time.process_time()으로 시작 시간을 기록합니다.
  2. 측정하려는 작업을 실행합니다.
  3. 작업 종료 후 다시 time.process_time()을 호출하고, 두 값의 차이로 순수 CPU 처리 시간을 계산합니다.

참고: 다른 시간 측정 함수와의 차이

파이썬에는 시간 측정용 함수가 여러 가지 있으므로 용도에 맞게 선택하는 것이 좋습니다.

  • time.process_time(): 현재 프로세스의 CPU 사용 시간만 측정 (대기 시간 제외)
  • time.perf_counter(): sleep 시간을 포함한 경과 시간을 고정밀도로 측정
  • time.time(): 현재 시각(유닉스 타임스탬프) 반환, 벤치마킹에는 부적합

마무리

time.process_time()은 코드의 실제 CPU 연산 시간을 정확하게 측정할 수 있는 간편하고 유용한 도구입니다. 알고리즘 성능 비교나 병목 지점 분석에 적극 활용해 보시기 바랍니다. 튜토리얼에 대해 궁금한 점이 있다면 댓글로 남겨주세요.