일일 코딩을 돕기 위해 여러 개인 라이브러리를 만들었습니다. 모범 사례는 Python 프로그램의 시작 부분에 가져 오기를 넣는 것입니다. 하지만 내 라이브러리 또는 함수 나 클래스를 라이브러리에서 가져옵니다. 모든 모듈이 임포트됩니다 (사용되지 않는 다른 클래스 나 함수에서 사용되는 경우에도 마찬가지 임). 나는 이것이 프로그램의 오버 헤드를 증가 시킨다고 생각합니까?크기 및 오버 헤드를 줄이기 위해 python 가져 오기를 제어합니다.
하나의 예. 나는 이런 식으로 보이는 pytools 라이브러리를 가지고있다.
import difflib
def foo():
# uses difflib.SequenceMatcher
def bar():
# benign function ie
print "Hello!"
return True
class foobar:
def __init__():
print "New foobar"
def ret_true():
return True
함수 foo는 difflib를 사용한다. 이제 bar와 foobar를 사용해야하는 새로운 프로그램을 작성하고 있다고 가정 해보십시오. 나는 수 중
import pytools
...
item = pytools.foobar()
vals = pytools.bar()
를 작성하거나 나는
from pytools import foobar, bar
...
item = foobar()
vals = bar()
을 할 수 있는가 중 하나를 선택 오버 헤드를 감소 시키거나 foo에와 difflib에 대한 종속성의 수입을 배제? difflib 로의 임포트가 foo 함수 내부에 있다면?
내가 실행중인 문제는 간단한 프로그램을 내 라이브러리의 하나 또는 두 개의 클래스 나 기능 만 사용하는 실행 파일로 변환 할 때 발생합니다. 실행 파일은 50MB 정도가됩니다.
저는 py2exe의 최적화 된 크기 페이지를 읽고 제안 사항 중 일부를 사용하여 최적화 할 수 있습니다.
http://www.py2exe.org/index.cgi/OptimizingSize
내가 정말 여기에 가장 좋은 방법을 요구하고있다 같아요. 의존성이 사용되지 않는 함수 또는 클래스에있는 라이브러리 가져 오기를 방지 할 수있는 방법이 있습니까? 필자는 import 문이 디버거를 사용하여 실행되는 것을 보았고 파이썬은 계속 진행하기 전에 "def somefunction"을 사용하여 "pick up"하는 것처럼 보입니다. 함수/클래스가 사용될 때까지 나머지 import가 완료되지 않았습니까? 이것은 함수 또는 클래스의 시작 부분에 대량의 가져 오기를두면 라이브러리의 나머지 부분에 대한 오버 헤드를 줄일 수 있음을 의미합니다.
이것은 실제로 파이썬 코드에서 이진 파일로의 변환기에 관한 질문입니다. 어떤 변환기를 사용하고 있습니까? –
나는 그것을 확인하는 방법을 모르겠다? 도움이된다면 Python 2.6을 사용하고 있습니다. –
"... 간단한 프로그램을 실행 파일로 변환 중입니다 ..."라고 말하는 중입니다. 이 변환 작업을 수행하려면 몇 가지 프로그램이 필요합니다. 이 프로그램은 포함 할 모듈을 결정합니다. –