PyPy는 CPython의 대체품입니다. PyPy는 그것과 같이 개발된 RPython 언어를 사용하여 만들어졌습니다. CPython 대신 이것을 사용하는 가장 큰 이유는 속도입니다 : 일반적으로 더 빠르게 동작합니다.(다음 섹션을 참고하세요)
PyPy는 Python 2.7.13과 3.6.9를 구현합니다.
#Python 2.7 테스트 제품군과 3.6 테스트 제품군의 대부분을 통과하며 모든 핵심 언어를 지원한다(조소하게 수정됨). 그것은 일반적으로 사용되는 대부분의 파이썬 표준 라이브러리 모듈을 지원한다.#
CPython과의 알려진 차이점은 호환성 페이지를 참고하세요.
다음과 같은 CPU 아키텍처를 지원합니다.
· x86 (IA-32) and x86_64
· ARM platforms (ARMv6 or ARMv7, with VFPv3)
· AArch64
· PowerPC 64bit both little and big endian
PyPy의 x86 버전은 Linux (32/64 bits), Mac OS X (64 bits), Windows (32 bits), OpenBSD, FreeBSD등의 운영체제에서 실행됩니다. 모든 x86이 아닌 버전들은 오직 리눅스에서만 지원됩니다.
만약 여러분이 발전을 돕는 것에 관심이 있으시다면, howtohelp 페이지를 참고하세요.
PyPy의 주요 기능:
속도
우리의 주요 실행 파일은 Just-in-Time 컴파일러가 포함되어 있습니다. 대부분의 벤치마크에서 정말 빠릅니다 – 매우 크고 복잡한 파이썬 앱에서요. 10줄짜리 코드가 아니라.
여러분이 아셔야 하는, PyPy가 여러분의 코드를 가속시킬 수 없는 두 종류의 케이스가 있습니다.
짧게 실행되는 프로세스 : 최소한 몇 초 정도 실행되지 않는다면, JIT 컴파일러가 워밍업될 충분한 시간이 없을 것입니다.
대부분의 시간이 런타임 라이브러리에서 소모되는 경우(C 함수 등), 그리고 실제로 파이썬 코드가 실행되지 않을 경우, JIT 컴파일러는 도움이 되지 않습니다.
따라서 PyPy가 가장 잘 작동하는 케이스는 Python 코드를 실행하는 데 상당한 시간이 소요되는 장기 실행 프로그램을 실행할 때 입니다. 우리 벤치마크 대부분이 이 케이스였지만, 전부는 아닙니다 – PyPy의 목표는 (이상적으로) 모든 파이썬 프로그램을 여전히 지원하면서 속도를 얻는 것입니다.
메모리 사용
메모리가 부족한 파이썬 프로그램(수백 메가바이트 이상)은 CPython에서보다 적은 공간을 차지할 수 있습니다. 항상 그렇지는 않고, 세부적인 상황에 따라 다릅니다. 또한 기준선이 CPython보다 높다는 점을 기억하세요.
스택리스
스택리스와 greenlet은 이제 일반 PyPy에 내장되었습니다. 더 자세한 정보는 여기를 참조하세요.
다른 기능들
PyPy는 많은 부차적인 기능들과 반독립적인 프로젝트를 가지고 있습니다. 더 자세한 정보는 여기를 참조하세요.
다른 언어들 : 우리는 또한 우리의 RPython 툴체인을 사용하여 다른 언어들을 구현했습니다 : 프롤로그,(거의 완성됨), 스몰토크, 자바스크립트, Io, 스킴, 게임보이.
또한 Ruby 구현인 Topaz와 PHP 구현인 HippyVM입니다.
샌드박스화
파이파이는 두 가지를 의미합니다. 첫 번째는 동적 프로그래밍 언어를 위한 인터프리터를 생성하는 RPython 번역 툴체인입니다. 그리고 두번째는 그것을 사용해 만들어진 특정한 파이썬 구현체입니다. RPyhon은 파이썬과 같은 문법을 사용하기 때문에, 이 생성된 버전은 파이썬으로 만들어진 파이썬 인터프리터로 알려지게 되었습니다. 그것은 유연하고 실험하기 쉽도록 설계되었습니다.
더 명료하게 하기 위해, RPython으로 쓰인 소스 코드로 시작해서, RPython 번역 툴체인을 적용하고, 바이너리 실행 파일로써의 PyPy로 끝이 납니다. 이 실행 파일은 파이썬 인터프리터입니다.
이중 사용이 혼란스러운 것으로 판명되어 툴체인과 생성된 통역사를 모두 의미하는 PyPy라는 단어를 사용하지 않기로 했습니다. 이제 우리는 Python 구현을 언급하기 위해 단어 PyPy를 사용하고, 프레임워크를 의미할 때 RPython 변환 툴체인을 명시적으로 언급합니다.