Что PyPy может предложить по сравнению с CPython, Jython и IronPython?

StackOverflow https://stackoverflow.com/questions/619437

  •  03-07-2019
  •  | 
  •  

Вопрос

Судя по тому, что я видел и читал в блогах, PyPy - очень амбициозный проект.Каковы некоторые преимущества, которые он принесет в таблицу по сравнению со своими братьями и сестрами (CPython, Jython и IronPython)?Это скорость, кросс-платформенная совместимость (включая мобильные платформы), возможность использовать c-расширения без GIL, или это скорее техническое упражнение на то, что можно сделать?

Это было полезно?

Решение

PyPy - это действительно два проекта:

  • Набор инструментов компилятора интерпретатора, позволяющий вам писать интерпретаторы на RPython (статическое подмножество Python) и иметь кроссплатформенные интерпретаторы, скомпилированные автономно, для JVM, для .NET (etc)
  • Реализация Python в RPython

Эти два проекта позволяют многие вещи.

  • Поддерживать Python на Python намного проще, чем на C
  • Из одной кодовой базы вы можете генерировать интерпретаторы Python, которые работают на JVM, .NET и standalone, вместо того, чтобы иметь несколько слегка несовместимых реализаций
  • Часть набора инструментов компилятора включает экспериментальный JIT-генератор (сейчас в его пятом воплощении и он начинает работать действительно хорошо) - цель предназначен для запуска JITed PyPy многое быстрее, чем CPython
  • Гораздо проще экспериментировать с фундаментальными функциями языка - такими как удаление GIL, улучшенная сборка мусора, интеграция без стекирования и так далее

Так что на самом деле есть много причин для того, чтобы PyPy был захватывающим, и он, наконец, начинает оправдывать все свои обещания.

Другие советы

Самой важной особенностью, конечно же, является JIT-компилятор. В CPython файлы компилируются в байт-код ( .pyc ) или оптимизируются в байт-код ( .pyo ) и затем интерпретируются. С PyPy они будут скомпилированы в нативный код. PyPy также включает в себя Stackless Python патчи, в том числе впечатляющие features (сериализация тасклетов, легкие потоки и т. д.)

В случае, если Python получит настоящий JIT , я думаю, что Быть так же быстро, как и любая другая реализация.

Преимущество заключается в том, что гораздо проще внедрять новые функции. Это можно увидеть сегодня, наблюдая за библиотекой. Часто модули пишутся сначала на Python, а затем переводятся на C.

кросс-платформенная совместимость

ДА

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top