Могу ли я встроить CPython внутрь PyPy?

Я хотел бы написать чувствительное к производительности приложение на Python, поэтому выполнение его под PyPy является естественным выбором. Однако значительная часть моего кода зависит от numpy, scipy и scikit-learn. Можно ли встроить экземпляр CPython в работающую программу PyPy для вызова кода, ориентированного на массив? Если нет, то какой самый простой способ заставить PyPy и CPython общаться друг с другом?


person Alex Rubinsteyn    schedule 19.10.2011    source источник
comment
Кстати: вас могут заинтересовать вопросы в ветке проекта pypy+numpy, которая в настоящее время активна в списке pypy-dev, в которой затрагиваются проблемы с использованием SciPy в (текущих версиях) PyPy, и я думаю, что кто-то предложил обходной путь для заставить его работать (также используя CPython, но в отдельных процессах).   -  person    schedule 19.10.2011


Ответы (2)


Нет, вы не можете встроить CPython внутрь PyPy, насколько мне известно. Однако вы можете использовать распределенные/параллельные системы выполнения, чтобы заставить PyPy взаимодействовать с CPython. И execnet, и Pyro упомяните этот конкретный PyPy <-> CPython вариант использования. Возможно, подойдут и другие пакеты со страницы Parallel Processing Python Wiki.

Кроме того, как упоминает Делнан, сейчас идет текущее обсуждение План разработчиков PyPy по реализации Numpy в PyPy (который не включает поддержку scipy и scikit.learn уже).

person TryPyPy    schedule 19.10.2011

На данный момент лучше всего использовать Cython, а не PyPy. Он имеет производительность уровня C, если вы добавите объявления типов, и отличную интеграцию с numpy и др.

В настоящее время люди работают над тем, чтобы он хорошо работал с PyPy, но до этого еще далеко.

person Tavis Rudd    schedule 19.10.2011
comment
Однако обратите внимание: он имеет производительность уровня C только если вы пишете C, простой запуск его поверх существующего кода Python мало что дает. Это означает ограничения на ваш код, типы и API, которые вы используете, тщательно размещенные аннотации типов и, возможно, некоторое ручное управление памятью. Конечно, Cython по-прежнему является очень хорошим вариантом, особенно в отношении интеграции с NumPy. Это просто не спаситель всего Pythonity. - person ; 19.10.2011
comment
Да, я должен был упомянуть, что ленивый дамп кода с Python на Cython ничего вам не даст, в отличие от PyPy. Однако вам не нужно «писать C». Вы пишете Cython с объявлениями типов и, может быть, уделяете больше внимания управлению памятью. Я обнаружил, что очень легко получить значительное ускорение только с помощью объявлений типов в коде, который в остальном является простым старым Python. Это все еще похоже на Python. - person Tavis Rudd; 19.10.2011