나는 PyPy 를보고 있었고 왜 그것이 주요 파이썬 배포판에 채택되지 않았는지 궁금합니다. JIT 컴파일 및 메모리 사용량 감소와 같은 것이 모든 Python 코드의 속도를 크게 향상시키지 않습니까?
간단히 말해서 PyPy의 주요 단점은 별도의 프로젝트로 유지되게하는 것입니까?
나는 PyPy 를보고 있었고 왜 그것이 주요 파이썬 배포판에 채택되지 않았는지 궁금합니다. JIT 컴파일 및 메모리 사용량 감소와 같은 것이 모든 Python 코드의 속도를 크게 향상시키지 않습니까?
간단히 말해서 PyPy의 주요 단점은 별도의 프로젝트로 유지되게하는 것입니까?
답변:
PyPy는 CPython의 포크가 아니므로 CPython에 직접 병합 될 수 없습니다.
이론적으로 파이썬 커뮤니티는 PyPy를 보편적으로 채택 할 수 있고, PyPy는 참조 구현이 될 수 있으며 CPython은 중단 될 수 있습니다. 그러나 PyPy에는 자체 약점이 있습니다.
PyPy는 훌륭한 프로젝트이지만 CPU를 많이 사용하는 작업의 런타임 속도는 모든 것이 아니며 많은 응용 프로그램에서 가장 걱정되는 것은 아닙니다. 예를 들어 Django는 PyPy에서 실행할 수 있으며 템플릿을 더 빠르게 만들 수 있지만 CPython의 데이터베이스 드라이버는 PyPy보다 빠릅니다. 결국, 어떤 구현이 더 효율적인지는 주어진 응용 프로그램의 병목 현상 위치에 달려 있습니다.
또 다른 예 : PyPy가 게임에는 유용 할 것이라고 생각하지만 PyPy에서 사용되는 것과 같은 대부분의 GC 전략은 눈에 띄는 지터를 유발합니다. CPython의 경우 대부분의 CPU 집약적 게임 항목은 PyGame 라이브러리로 오프로드됩니다. PyGame은 주로 C 확장으로 구현되므로 PyPy는 활용할 수 없습니다 (pygame-cffi 참조). 나는 여전히 PyPy가 게임을위한 훌륭한 플랫폼 일 수 있다고 생각하지만 실제로 사용되는 것을 본 적이 없습니다.
PyPy와 CPython은 근본적인 디자인 질문에 대해 근본적으로 다른 접근 방식을 취하고 있으며 다른 절충점을 가지므로 모든 경우에 어느 쪽도 다른 쪽보다 "더 나은"것은 아닙니다.
우선, Python 2.x와 100 % 호환되지 않으며 3.x에 대한 예비 지원 만 있습니다 .
PyPy가 제공하는 Python 구현은 그들이 만든 프레임 워크를 사용하여 생성되는데, 이는 매우 시원하지만 기존 CPython 구현과는 완전히 다릅니다. 완전히 교체해야합니다.
PyPy와 CPython 간에는 매우 구체적인 차이점 이 있습니다. 확장 모듈 이 어떻게 지원되는지는 큰 문제입니다. 표준 라이브러리를 넘어서고 싶다면 큰 문제입니다.
PyPy가 보편적으로 빠르지 않다는 점도 주목할 가치가 있습니다.
Guido van Rossum의이 비디오를 보십시오 . 그는 당신이 12 분 33 초에 당신이 물었던 동일한 질문에 대해 이야기합니다.
하이라이트:
결국, 그는 결정할 사람입니다 ...
한 가지 이유는 PyPy 사이트 에 따르면 현재 32 비트 및 64 비트 Intel x86 아키텍처에서만 실행되고 CPython은 다른 플랫폼에서도 실행되기 때문입니다. PyPy의 플랫폼 별 속도 향상 때문일 수 있습니다. 속도는 좋지만 사람들은 종종 언어 구현이 가능한 한 "플랫폼 독립적"이되기를 원합니다.
더 많은 통찰력을 얻으려면 David Beazley 의이 기조 연설을 시청하는 것이 좋습니다 . PyPy의 자연 및 복잡성을 명확하게하여 귀하의 질문에 답변합니다.
여기에 언급 된 모든 것 외에도 PyPy는 버그 측면에서 CPython만큼 강력하지 않습니다. SymPy를 사용하면 지난 몇 년 동안 PyPy에서 출시 된 버전과 야간에 약 12 가지의 버그가 발견되었습니다.
반면 CPython에서는 버그가 하나만 발견되었으며 시험판에있었습니다.
또한 Python 3 지원 부족을 할인하지 마십시오. 핵심 Python 커뮤니티의 어느 누구도 더 이상 Python 2에 관심이 없습니다. 그들은 파이썬 3.4에서 다음 큰 일을하고 있는데, 파이썬 3의 다섯 번째 주요 릴리스가 될 것입니다. 그래서 그들은 경쟁자가되기 전에 할 일이 있습니다.
내가 틀리지 마 파이 파이는 대단합니다. 그러나 여전히 많은 중요한 방법으로 CPython보다 나은 것은 아닙니다.
그런데 PyPy에서 SymPy를 사용하면 더 작은 메모리 공간 (또는 속도 향상)이 표시되지 않습니다. https://bitbucket.org/pypy/pypy/issues/1447/을 참조 하십시오 .