더북(TheBook)

큰 파이썬 생태계는 성능 최적화에 대한 요구에 대응해 훌륭한 라이브러리와 도구를 개발해왔다. 많은 다른 도구가 있지만, 꼭 알아야 할 몇 가지만 소개한다(아이템 116 “커뮤니티에서 만든 모듈을 어디서 찾을 수 있는지 알아두라” 참조).

NumPy 모듈(넘파이, https://numpy.org)은 배열 연산을 편리한 파이썬 함수 호출을 사용해 고성능으로 수행할 수 있도록 지원하는 라이브러리다. 내부에서는 BLAS(Basic Linear Algebra Subprograms)를 사용해 높은 성능과 CPU 병렬성을 제공한다. NumPy를 사용하려면 데이터 구조 중 일부를 변경해야 하지만, 얻을 수 있는 성능 향상 효과는 매우 크다.

Numba 모듈(넘바, https://numba.pydata.org)은 실행 시점에 기존 파이썬 함수를 JIT(지트, just-in-time) 컴파일해서 고도로 최적화된 기계어 코드로 변환한다. 코드에서 동적 기능을 줄이고 더 단순한 데이터 타입을 쓰게 수정해야 할 수도 있다. ctypes와 마찬가지로 Numba도 추가적인 빌드 복잡성을 피할 수 있다는 점이 큰 장점이다.

Cython(사이썬, https://cython.org)은 C 코드를 직접 작성하지 않고도 C 확장 모듈을 쉽게 만들 수 있도록 지원하는 파이썬 언어의 상위 집합으로 이뤄진 언어다. 표준 C 확장과 빌드 복잡성이 비슷하지만 파이썬 C API보다 사용하기 훨씬 쉽다.