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