728x90
반응형

 

 

Python 내부에서는 모듈을 import 하는 함수를 여러번 실행하더라도 모듈은 한번만 Import 되기 때문에 사실상 어디서 하던 상관 없다고 한다. 

 

심지어 함수 안에서 모듈을 import 하는 것이 실행속도가 더 빠르다고 한다. 왜냐하면 맨 위에서 컴파일하면 LOAD_GLOBAL 하는 반면, 함수 안에서는 LOAD_FAST 하기 때문에 함수 안에서 Import 하는 것이 더 빠르다고 한다. 그럼에도 불구하고 맨 위에 모듈을 import 하는 이유는 Python 스타일 가이드가 그렇게 쓰라고 권장했기 때문이다. 

 

 

 

 

 

맨 위에서 import 하는 경우

import random

def f():
    L = []
    for i in xrange(1000):
        L.append(random.random())


for i in xrange(1000):
    f()

$ time python import.py

real        0m0.721s
user        0m0.412s
sys         0m0.020s

 

 

함수 안에서 import 하는 경우

def f():
    import random
    L = []
    for i in xrange(1000):
        L.append(random.random())

for i in xrange(1000):
    f()

$ time python import2.py

real        0m0.661s
user        0m0.404s
sys         0m0.008s

 

 

 

 

참고자료 : https://hashcode.co.kr/questions/1054/import%EB%8A%94-%EA%BC%AD-%EC%BD%94%EB%93%9C-%EB%A7%A8-%EC%9C%97%EC%A4%84%EC%97%90-%EC%8D%A8%EC%95%BC-%ED%95%98%EB%82%98%EC%9A%94

 

import는 꼭 코드 맨 윗줄에 써야 하나요?

보통 모듈을 import할 때는 소스코드1보다는 소스코드2같이 맨 윗줄에 넣는 것 같던데이 클래스안에서만 쓰이는 모듈이라면 굳이 맨 윗줄에 import해 줄 필요는 없을 것 같은데 다들 맨 윗줄에서 import하나요? 더 빨라서 그런걸까요 ?_? 소스코드1 class SomeClass(object): def not_often_called(self) from datetime import datetime self.datetime =

hashcode.co.kr

 

728x90
반응형