(응용 프로그램 시작 시간이 절대적으로 중요하며 응용 프로그램이 많이 시작되고 응용 프로그램이 보통 때보 다 느리며 많은 파일을 가져와야하고 .pyc
개의 파일로 컴파일하는 환경에서 응용 프로그램이 실행된다고 가정하십시오. 사용할 수 없습니다.)여러 개의 Python 소스 파일을 하나의 파일로 연결하는 방법은 무엇입니까?
모듈 모음을 정의하는 모든 Python 소스 파일을 하나의 새로운 Python 소스 파일로 연결하고 싶습니다.
원본 파일 중 하나를 가져온 것처럼 새 파일을 가져온 결과가 좋겠습니까? 원본 파일을 더 가져 오는 등의 작업이 필요합니다.
이것이 가능합니까?
'bar'및 'baz'모듈의 소스 파일을 제공 할 때 도구가 생성 할 수있는 대략적인 수동 시뮬레이션입니다. 코드를 배포하기 전에 이러한 도구를 실행하십시오.
__file__ = 'foo.py'
def _module(_name):
import types
mod = types.ModuleType(name)
mod.__file__ = __file__
sys.modules[module_name] = mod
return mod
def _bar_module():
def hello():
print 'Hello World! BAR'
mod = create_module('foo.bar')
mod.hello = hello
return mod
bar = _bar_module()
del _bar_module
def _baz_module():
def hello():
print 'Hello World! BAZ'
mod = create_module('foo.bar.baz')
mod.hello = hello
return mod
baz = _baz_module()
del _baz_module
그리고 지금 당신은 할 수 있습니다
from foo.bar import hello
hello()
이 코드는 import 문 및 종속성과 같은 것들을 고려하지 않습니다. 이 코드 또는 다른 기술을 사용하여 소스 파일을 어셈블 할 기존 코드가 있습니까?
브라우저에 보내기 전에 JavaScript 파일을 조합하고 최적화하는 데 사용되는 도구와 매우 비슷합니다. 여러 HTTP 요청 대기 시간으로 인해 성능이 저하됩니다. 이 Python의 경우 시작시 수백 개의 Python 소스 파일을 가져 오는 것이 지연됩니다.
이것이 인터프리터 시작 시간에 영향을 줄 것이라는 점을 증명하는 숫자가 있습니까? –
시작 시간이 확실히 문제입니다. 이 일이 더 빨라지기를 바래요. 문제의 제한을 분명히했습니다. –
나는 회의 속도가 빨라진다는 것도 회의적이다. 앱이 다시로드 될 때마다 여전히 X 줄의 코드를 VM에로드해야합니다. 모듈을 하나의 큰 파일로 통합하기 전에 시간을 투자 할 필요가 없다는 것을 확인하는 데 시간을 투자 할 것입니다. – JasonSmith