더북(TheBook)

self 컬럼은 각 모듈이 임포트를 제외한 전역 문장들을 실행하는 데 걸린 시간(단위: 마이크로초)이다. cumulative 컬럼은 모든 종속성을 포함해 해당 모듈을 로딩하는 데 걸린 시간이다. 결과를 보면 enhance 모듈이 프로그램의 주요 원인임을 알 수 있다.

한 가지 해법은 실제 사용할 때까지 의존성 임포트를 연기하는 것이다. 이는 파이썬이 프로그램 시작 시 모듈 영역의 import 문은 물론 실행 시점에 (함수 내부도 포함) 모듈을 동적으로 임포트하는 것도 지원하기 때문에 가능하다(아이템 122 “순환 의존성을 깨는 방법을 알아두라”에서 이 동적 기능을 활용하는 다른 방법을 볼 수 있다). 다음 코드는 앞에서 본 명령줄 도구를 변경해서 main 함수 안쪽에서 명령을 가져온 다음에 adjust 모듈이나 enhance 모듈 중 하나만 임포트한다.