린아저씨의 잡학사전

안녕하세요. 린아저씨 입니다.

코드를 짜다보면 내가 짠 코드가 실행되는데 얼마나 걸리는지 측정해야할 일들이 생기곤 합니다.

이러할 경우 사용할 수 있는 time 모듈의 두가지 함수에 대해 알아보려고 합니다.

 

time 모듈의 perf_counter 함수와 process_time 함수 입니다.

아래 코드는 python3.4 버전 이상에서 실행되는걸 확인하였습니다.

 

perf_counter

perf_counter 함수는 코드의 연산 시간 외에 sleep, file io 등 pending에 들어가는 시간까지 모두 포함해서 측정합니다.

import time

def perf_counter_test():
	start_time = time.perf_counter()
	time.sleep(10)
	print('perf_counter')
	end_time = time.perf_counter()
	return (end_time-start_time)
    

if __name__ == '__main__':
	print('perf_counter : ', perf_counter_test(), 's')

따라서 위의 코드를 실행하게 되면 "perf_counter : 10.00017s" 와 유사하게 출력 됩니다. 

또한 위의 코드에 표시했듯이 이렇게 나오는 시간은 초단위가 측정 됩니다.

 

process_time

process_time 함수는 코드의 연산 시간만을 측정합니다. 따라서 sleep이 10초가 걸리던 10시간이 걸리던 이러한 pending 시간은 측정되지 않습니다.

import time

def process_time_test():
	start_time = time.process_time()
	time.sleep(10)
	print('process_time')
	end_time = time.process_time()
	return (end_time - start_time)
    
if __name__ == '__main__':    
	print('process_time : ', process_time_test(), 's')

따라서 위의 코드를 실행시키면 "process_time : 0.00123s"와 같이 출력되며, process_time은 10초의 sleep 시간이 측정에 포함되지 않은 것을 확인 할 수 있습니다.

공유하기

facebook twitter kakaoTalk kakaostory naver band