그러나 차선책은 이상적인 방법일 수는 없다. 그냥 파이썬 프로그램을 그대로 가져와 훨씬 더 빠르게 실행할 수 있다면 좋지 않을까? 그 대답이 바로 파이파이(PyPy)다. 파이파이 vs. C파이썬 파이파이는 기본 파이썬 인터프리터인 C파이썬(CPython)을 대체한다. C파이썬은 파이썬을 중간 바이트코드로 컴파일하고 이 바이트코드가 가상머신에 의해 인터프리트되는 방식인 데 반해, 파이파이는 JIT(Just-In-Time) 컴파일을 사용해 파이썬 코드를 머신 네이티브 어셈블리어로 변환한다.
수행하는 작업에 따라 상당한 정도의 성능 향상이 가능하다. 평균적으로 파이파이는 파이썬 3.7에 비해 파이썬 속도를 약 4.7배 더 높여주며 일부 작업에서는 50배 이상의 속도 향상이 가능하다. 새로운 버전의 C파이썬 인터프리터에도 특정 종류의 JIT 최적화가 추가되고 있지만 현재 파이파이의 범위와 효과에 비할 바는 아니다. 앞으로 대등해질 가능성을 배제할 수 없지만 적어도 지금은 아니다.
가장 좋은 점은 파이파이가 제공하는 효과를 얻기 위해 개발자가 따로 해야 할 일이 거의 없다는 것이다. C파이썬을 파이파이로 바꾸기만 하면 된다. (다음에서 설명할) 몇 가지 예외는 있지만 파이파이의 공식적인 목표는 기존의 파이썬 코드를 수정 없이 실행하면서 자동으로 속도를 높여주는 것이다.
현재 파이파이는 파이썬 2와 파이썬 3을 각기 다른 프로젝트 구현으로 모두 지원한다. 즉, 실행할 파이썬의 버전에 따라 다른 버전의 파이파이를 다운로드해야 한다. 파이파이의 파이썬 2 브랜치가 나온 시점이 훨씬 더 오래됐지만 파이썬 3 버전도 최근 거의 따라잡았다. 현재 파이썬 버전 3.9까지 지원하며 파이썬 3.10은 실험 수준에서 지원된다. 파이파이는 모든 핵심 파이썬 언어를 지원하는 것 외에, 패키징을 위한 pip, 가상 환경을 위한 virtualenv 등 파이썬 생태계의 방대한 툴과도 호환된다. C 모듈을 사용하는 패키지를 포함해 대부분의 파이썬 패키지는 변경 없이 그대로 동작한다. 물론 일부 제한도 있다. 이는 아래에서 살펴본다.
|