Альтернатива psyco для 64-битных машин
Psyco поражает, когда он работает . Однако, не переходя к 32-битной версии Python, похоже, что в ближайшее время мы получим 64-разрядную версию. Существуют ли альтернативы psyco, которые могут ускорить общий код python, связанный с CPU?
Связанный
Psyco x64?
Каковы возможные ловушки при портировании Psyco на 64-битный?
- PIPON PIP имеет проблемы с путём для MS Visual Studio 2010 Express для 64-разрядной установки на Windows 7
- Как установить python-igraph на Ubuntu 8.04 LTS 64-бит?
- Как заставить использовать 64-битный питон для Mac OS X?
- Как построить 64-битный Python на OS X 10.6 – ТОЛЬКО 64 бит, нет Универсальная глупость
- Python получает неправильное значение для os.environ на 64-битной версии
Ответ заключается в том, чтобы вместо этого использовать PyPy . Из http://psyco.sourceforge.net/introduction.html :
Мои планы на 2006 год состоят в том, чтобы перенести методы, реализованные в Psyco в PyPy.
Из сообщения блога PyPy в феврале:
… основные моменты и статус pypy:
* Большинство тестов Python работают намного быстрее, чем с CPython или Psyco
* сама программа PyPy для компилятора реального мира (200 KLocs) работает в два раза быстрее
* поддерживает x86 32 и 64 бит и находится в процессе поддержки ARM
…
PyPy , на что указывает разработчик Psyco, не является удобной заменой для Psyco только с целью некоторого увеличения скорости в узком коде. Его еще одна экосистема.
Использование PyPy имеет много последствий, повышает многие вопросы совместимости для более крупных проектов и является широко распространенным решением: это означает переход на совершенно другую реализацию Python вдали от уровня капота и уровня качества разработчиков лидера Python. PyPy довольно сильно раздута для повышения скорости в большинстве реальных проектов. Первоначальные казни занимают много времени. Объем памяти огромный и уродливый. Представленные контрольные показатели «выбраны». И всегда есть какая-то библиотека, необходимая для проекта, или проблема с GUI / Server / IDE / Debugging, которая полностью останавливает показ или умножает время разработки и отладки. Увеличение скорости трудно предсказать и вряд ли можно настроить путем фокусировки. С ним ничего не чувствует.
В настоящее время зрелыми альтернативами для ускорения кода узких мест внутри CPython являются Cython и numba . (Здесь есть другие «подножия»)
Numba , библиотека компилятора JIT для CPython (как и Psyco), фокусируется на числовом коде. Он обеспечивает впечатляющую скорость (10..200x, больше, чем psyco / PyPy), просто поместив декоратор jit
функции на функции узких мест. И это особенно быстро и в сочетании с массивами numpy
из коробки! (в отличие от Psyco); Однако Numba не делает ничего или даже замедляет значительно другой нормальный код python, который в основном работает с атрибутами объектов, строками, общими списками, диктофонами и т. Д. (Хуже видно: скорость 0,04x, хуже, чем Psyco). В отличие от Psyco, Numba – огромная установка и медленный импорт (рисование numpy). Но он также позволяет создавать предварительно скомпилированные статические модули из выбранных функций, которые затем не нуждаются в установке numba для развертывания (аналогично Cython).
Cython , статический компилятор смешанного языка Python & C (супер-набор языка Python), который использует конвейер C-компилятора и создает DLL-модули, обычно используется путем рефакторинга некоторых функций узких мест в отдельный модуль. Но даже когда неизменные большие модули Python скомпилированы Cython , это обычно дает уже увеличение скорости примерно в 2 раза, просто так «бесплатно»! Тем не менее, эти скомпилированные DLL-модули значительно больше, чем .pyc / .pyo-s. Cython, так сказать, разворачивает байт-код Python в прямые вызовы C-функции. И это немного улучшает оптимизацию на константах и т. Д. ( Например , установка Whepzy.web, например, по типу Cythonizes всех ее кода бесстыдным образом без предупреждения, что затрудняет отладку и проверку во время разработки)
В дополнение к «свободному» ускорению скорости неизмененного кода дальнейшие огромные увеличения скорости (приближающиеся к скорости C), особенно для числового / массивного кода и некоторой OO-работы, могут быть достигнуты довольно простым способом, поставив несколько объявлений статического типа Cython в код Python с горячей точкой. Для обработки строчной строки C требуется несколько более активное кодирование.
Cython позволяет постоянно улучшать скорость до скорости C, фокусируя внимание на узких местах и настраивая код с типами Cython без проблем в мелкозернистом режиме. Это уникальная сила и обладает гораздо большим потенциалом, чем Psyco, Numba и PyPy (как это). Его зрелый вариант без тупика.
- Как заставить Python использовать сборку
- Почему я получаю другой хэш SHA1 между Powershell и 32bit-Python в системной DLL?
- Python 64-битный не смог запустить правильно (0xc00000cc) на Windows HPC
- NumPy для Python 2.7 на 64-битной Windows
- Как я могу скомпилировать расширение с помощью cython?
- Окно графика matplotlib не появится
- Matplotlib – ошибка Python
- Как определить, работает ли Python в качестве 64-разрядного приложения?
- Могу ли я заставить mod_wsgi работать с 64-разрядной установкой Apache / Python?