Альтернатива psyco для 64-битных машин - PullRequest
6 голосов
/ 16 марта 2011

Psyco удивительно , когда работает .Однако, если не переходить на 32-битную версию Python, не похоже, что мы получим 64-битную версию в ближайшее время .Существуют ли альтернативы psyco, которые могут ускорить общий код Python, связанный с процессором?

Связанные

Psyco x64?

Каковы возможные подводные камни при переносе Psyco на 64-бит?

Ответы [ 2 ]

5 голосов
/ 17 марта 2011

Ответ должен использовать PyPy . От http://psyco.sourceforge.net/introduction.html:

Мои планы на 2006 год - перенести методы, реализованные в Psyco, на PyPy.

Из сообщения в блоге PyPy в феврале:

... основные моменты и статус pypy:
* большинство тестов Python работают намного быстрее, чем с CPython или Psyco
* Реальный набор инструментов компилятора PyPy (200 KLocs) работает в два раза быстрее
* поддерживает 32-разрядные и 64-разрядные версии x86 и находится в процессе поддержки ARM
...

2 голосов
/ 09 мая 2017

PyPy , на которую указывает разработчик Psyco, не является удобной заменой Psyco только для некоторого увеличения скорости в коде узкого места.Это еще одна экосистема.

Использование PyPy имеет много последствий, поднимает много вопросов совместимости для более крупных проектов и является повсеместным решением: это означает переход на совершенно иную реализацию Python вдали от капот и уровня обеспечения качества Python.лидер разработчиков.PyPy довольно чрезмерно раскручен для его увеличения скорости в большинстве реальных проектов слова.Первоначальные казни занимают много времени.Объем памяти огромен и безобразен.Представленные тесты «выбраны».И всегда есть какая-то библиотека, необходимая для проекта, или проблема с GUI / Server / IDE / Debugging, которая полностью останавливает показ или увеличивает время разработки и отладки.Прирост скорости трудно предсказать, и вряд ли его можно настроить с помощью фокусировки.Ничего приятного в этом не ощущать.

На сегодняшний день наиболее эффективными альтернативами для ускорения кода узкого места в CPython являются Cython и numba .(Есть и другие «mayflies» здесь )


Numba , библиотека JIT-компилятора для CPython (как и Psyco), фокусируется на числовом коде.Он обеспечивает впечатляющий прирост скорости (10..200x, больше, чем psyco / PyPy), просто добавив функциональный декоратор jit в функции узкого места.И это особенно быстро и в сочетании с numpy массивами из коробки!(в отличие от Psyco);Однако до сих пор Numba ничего не делает или даже сильно тормозит другой нормальный код Python, который в основном работает с атрибутами объектов, строками, общими списками, диктовками и т. Д. (Худшее замечено: скорость 0,04x, хуже, чем у Psyco).В отличие от Psyco, Numba - это огромная установка и медленный импорт (рисует нолик)Но в качестве альтернативы он позволяет создавать предварительно скомпилированные статические модули из выбранных функций, которые затем больше не нуждаются в установке numba для развертывания (аналогично Cython).


Cython ,статический компилятор смешанного языка Python & C (супер-набор языка Python), который использует конвейер компилятора C и производит модули DLL, обычно используется путем рефакторинга некоторых функций узкого места в отдельный модуль.Но даже когда неизмененные большие модули Python скомпилированы в , это обычно дает увеличение скорости примерно в 2 раза, просто так «бесплатно»!Тем не менее, эти скомпилированные модули DLL значительно больше, чем .pyc / .pyo-s.Так сказать, Cython раскрывает байт-код Python в прямые вызовы C-функций.Кроме того, он немного оптимизирует константы и т. Д. ( Установка pip Wheezy.web , например, по умолчанию вроде Cythonize всего своего кода бесстыдно без предупреждения - что затрудняет отладку и проверку во время разработки)

В дополнение к «бесплатному» приросту скорости неизмененного кода, можно добиться еще более значительного увеличения еще большего увеличения скорости (приближающегося к скорости C), особенно для числового кода / кода массива и некоторой работы OO, путем размещениянесколько статических объявлений типов Cython в горячий код Python.Обработка строки со скоростью C требует несколько более сложного кодирования.

Cython позволяет непрерывно улучшать скорость до скорости C, сосредотачиваясь на узких местах и ​​плавно настраивая код с типами Cython.Это уникальная сила и имеет гораздо больший потенциал, чем Psyco, Numba и PyPy (как это).Это зрелый вариант без тупика.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...