
import time
def perf_clock(func):
def perf_clocked(*args):
# μμμκ°
st = time.perf_counter()
result = func(*args)
# μ’
λ£μκ°
et = time.perf_counter() - st
# ν¨μλͺ
name = func.__name__
# λ§€κ°λ³μ
arg_str = ','.join(repr(arg) for arg in args)
# μΆλ ₯
print('[%0.5fs] %s(%s) -> %r' % (et, name, arg_str, result))
return result
return perf_clocked
def time_func(seconds):
time.sleep(seconds)
def sum_func(*numbers):
return sum(numbers)
def fact_func(n):
return 1 if n < 2 else n * fact_func(n-1)
non_deco1 = perf_clock(time_func)
non_deco2 = perf_clock(sum_func)
non_deco3 = perf_clock(fact_func)
non_deco1(2)
# [2.00034s] time_func(2) -> None
non_deco2(100, 200, 300, 400, 500)
# [0.00000s] sum_func(100,200,300,400,500) -> 1500
non_deco3(10)
# [0.00001s] fact_func(10) -> 3628800
@perf_clock
def time_func(seconds):
time.sleep(seconds)
@perf_clock
def sum_func(*numbers):
return sum(numbers)
@perf_clock
def fact_func(n):
return 1 if n < 2 else n * fact_func(n-1)
time_func(2)
# [2.00027s] time_func(2) -> None
sum_func(10,20,30,40,50)
# [0.00000s] sum_func(10,20,30,40,50) -> 150
fact_func(10)
# [0.00000s] fact_func(1) -> 1
# [0.00001s] fact_func(2) -> 2
# [0.00002s] fact_func(3) -> 6
# [0.00005s] fact_func(4) -> 24
# [0.00005s] fact_func(5) -> 120
# [0.00006s] fact_func(6) -> 720
# [0.00007s] fact_func(7) -> 5040
# [0.00008s] fact_func(8) -> 40320
# [0.00009s] fact_func(9) -> 362880
# [0.00010s] fact_func(10) -> 3628800
λ°μ½λ μ΄ν°λ ν¨μλ₯Ό κ°μΈλ ννλ‘ κ΅¬μ±λμ΄ μμ΅λλ€. λ°λΌμ λ°μ½λ μ΄ν°λ κΈ°μ‘΄ ν¨μλ₯Ό μμ νμ§ μμΌλ©΄μ μΆκ° κΈ°λ₯μ ꡬνν λ μ¬μ©ν©λλ€.
μΆμ²: https://dojang.io/mod/page/view.php?id=2427