728x90
반응형
코드를 만들다 보면 실행시간을 측정할 일이 있게 됩니다.
time package의 시작시간과 완료시간을 기록한 후 (실행기간 = 완료시간 - 시작시간) 으로 계산합니다.
#########################
# 함수의 실행시간 측정.
#########################
import time
def ftn1(): # 실행 시간을 측정하고자 하는 함수
sum = 0
for i in range(int(1e7)):
sum += i
return
# 시작 시간을 기록
start_r = time.perf_counter() # sleep 함수를 호출하여 대기한 시간을 포함하여 측정
start_p = time.process_time() # 실제로 연산하는데 걸린 시간만 측정
ftn1() # 함수 실행
# 완료시간을 기록
end_r = time.perf_counter()
end_p = time.process_time()
# 실행시간 계산
time_r = end_r - start_r
time_p = end_p - start_p
print(f'function run time : {time_r:.3f}sec (real) / {time_p:.3f}sec(cpu)')
run time : 1.217sec (real) / 1.156sec(cpu)
perf_counter()로 측정한 시간이 일반적인 실행시간이 되겠군요.
파이썬의 Decorator를 사용해서 좀 더 사용하기 쉬운 코드입니다.
코드상에 직접 시작시간, 완료 시간 및 계산 코드를 입력하지 않아도 됩니다.
##############################################################
# 함수의 실행시간 측정. 함수내 측정코드를 삽입하지 않아도 됨
##############################################################
import time
# Decorator(@) 사용
def elapsed(f):
def wrap(*args):
start_r = time.perf_counter() # sleep 함수를 호출하여 대기한 시간을 포함하여 측정
start_p = time.process_time() # 실제로 연산하는데 걸린 시간만 측정
ret = f(*args)
end_r = time.perf_counter()
end_p = time.process_time()
runtime_r = end_r - start_r
runtime_p = end_p - start_p
print(f'function({f.__name__}) run time : {runtime_r:.3f}sec (real) / {runtime_p:.3f}sec(cpu)')
return ret
return wrap
@elapsed
def ftn1():
sum = 0
for i in range(int(1e7)):
sum += i
return
ftn1()
function(ftn1) run time : 1.053sec (real) / 1.000sec(cpu)
728x90
반응형
'프로그램' 카테고리의 다른 글
[파이썬] matplotlib의 math_fontfamily 에러 (0) | 2022.08.13 |
---|---|
[파이썬] 웹에서 뉴스 데이터 가져오기 (웹크롤링) (0) | 2022.08.12 |
[파이썬] Decorator(@) 간단 사용 (0) | 2022.08.12 |
[파이썬] 문장 단어수 세기 (0) | 2022.08.12 |
[파이썬] 문장 요약 하기 (lexrankr) (0) | 2022.08.12 |
댓글