Python 3.15에서는 지연 임포트를 사용할 수 있다. 모듈을 프로그램 시작 때 바로 불러오지 않고, 실제로 사용할 때까지 로드를 미루는 기능이다. Daniel Lemire는 Python 3.15.0b4에서 시험한 명령행 도구의 시작 시간이 작업에 따라 최대 15배 빨라졌다고 보고했다.
지연 임포트는 lazy를 임포트문 앞에 붙여 쓴다.
lazy import json
이때 json은 처음에는 모듈이 아니라 자리표시자 역할을 하는 객체다. 프로그램이 json을 사용하면 그때 실제로 모듈을 불러온다. 끝내 사용하지 않으면 모듈을 로드하지 않는다.
Lemire는 일반 임포트와 지연 임포트 버전이 각각 같은 16개 모듈을 불러오도록 만든 시험용 명령행 도구를 비교했다. 도구에는 --version, CSV 파일을 읽어 statistics.fmean으로 평균을 계산하는 mean, pandas로 같은 파일의 요약을 출력하는 stats 경로가 있다. 두 버전의 차이는 임포트문마다 lazy를 붙였는지 여부뿐이다.
Intel Xeon Gold 6548N(Emerald Rapids)에서 Python 3.15.0b4와 numpy 2.5, pandas 3.0, requests 2.34를 사용한 측정 결과는 다음과 같다.
--version: 일반 임포트 295ms, 지연 임포트 20ms로 15배 빨라졌다.mean: 296ms에서 24ms로 12배 빨라졌다.stats: 299ms에서 224ms로 1.3배 빨라졌다.
Lemire의 계산에 따르면 인터프리터 시작 시간 11.7ms를 제외할 경우 --version 경로의 임포트 비용은 283ms에서 약 8ms로 줄어든다. 그는 이를 35배 감소로 설명했다. 다만 이 결과는 해당 시험용 도구와 환경에서 나온 측정치다.
지연 임포트의 단점은 모듈이 없을 때 오류가 발생하는 시점이 늦어진다는 점이다. 일반 임포트는 시작 단계에서 실패하지만, 지연 임포트는 모듈을 처음 사용하는 순간에 실패할 수 있다. 그 시점은 함수 실행 중일 수도 있고, 장시간 실행되는 서버에서는 몇 시간 뒤일 수도 있다.
댓글 (0)
로그인하면 이 기사에 내 생각을 남길 수 있어요