Q & A
함수의 실행 시간은 어떻게 측정하나요?
함수의 실행 시간을 측정하려면 time 모듈의 time 함수를 활용합니다. time 함수는 현재 시간을 실수로 반환하는데 함수가 끝난 시간에서 시작된 시간을 빼면 실행 시간을 구할 수 있습니다. 다음은 함수의 실행 시간을 측정하는 데코레이터입니다.
from time import time from functools import reduce def profile(func): def wrapper(n): begin = time() # 함수가 시작된 시간 r = func(n) end = time() # 함수가 끝난 시간 print('실행 시간: {0:.3f}초'.format(end - begin)) # 끝난 시간에서 시작된 시간을 빼면 return r # 실행 시간 return wrapper @profile def factorial(n): return reduce(lambda x, y: x * y, range(1, n + 1)) factorial(10000) # 숫자가 매우 커서 반환값 출력은 생략
실행 결과
실행 시간: 0.047초
import는 항상 소스 코드 맨 처음에 사용해야 하나요?
import는 소스 코드 중간에 사용해도 됩니다.
print('Hello, world!') import math # import는 소스 코드 중간에 사용해도 됨 print(math.pi)
단, import로 모듈을 가져오기 전에 모듈의 변수, 함수, 클래스를 사용하면 에러가 발생합니다. 따라서 import로 모듈을 가져온 뒤에 변수, 함수, 클래스를 사용해야 합니다.
print('Hello, world!') print(math.pi) # NameError: name 'math' is not defined: 모듈을 가져오기 전에 사용하면 에러 발생 import math