함수의 실행 시간을 구하려면 함수 앞뒤로 time.time()을 호출해서 함수 실행 후 시간을 실행 전 시간으로 빼주면 된다.
그런데 이제 이렇게 사용할 함수가 너무 많다면 모든 함수에 대해 이런 작업을 해주기는 힘들고 가독성도 떨어진다.
그래서 우리는 아래 코드처럼 함수와 파라미터를 인자로 전달하기로 했다.
def calc_runtime(time_list, function, *params):
start_time = time.time()
result = function(*params)
time_list.append(time.time() - start_time)
return result
위 코드에서 볼 수 있듯이 파이썬에서는 함수를 인자로 전달이 가능하고 해당 함수의 파라미터 또한 를 통해 한번에 전달 가능하다. params 앞에 *을 붙이지 않으면 튜플 형식으로 전달되는데 이렇게 되면 내부 함수의 호출에 문제가 생길 수도 있다.
이후 시간을 측정하고 result를 그대로 전달하면 프록시 패턴과 같은 효과를 볼 수 있다.
그런데 비동기 함수의 경우 이 방식으로는 시간을 측정할 수 없다!