Питон: PyPy: распределение SciPy / хи-квадрат? - PullRequest
4 голосов
/ 07 декабря 2011

У меня есть проект Python, где производительность довольно важна.Честно говоря, я знаю, что Python (по крайней мере, чистый Python) не лучший инструмент для работы, но я все равно использую его, потому что хочу распространять очень простую версию Python для чистого исследовательского кода, чтобы люди могли его модифицировать,и т.д. без необходимости создавать сложные условия.(У меня также есть альтернативная реализация, написанная на D, которая гораздо быстрее, но сложнее взломать.)

Я использовал PyPy в качестве интерпретатора и рекомендовал его всем, кто использовал этот код.Это дало мне разумную скорость.Затем я решил настроить алгоритм и получить доступ к некоторым функциям из SciPy (все, что мне нужно, это CDF, функция выживания и обратный CDF для распределения хи-квадрат).Я попытался запустить свой код в CPython, чтобы получить доступ к SciPy, и он медленный, как патока.

Может кто-нибудь предложить одну из трех вещей:

  1. Кладж, который позволит мнеиспользовать некоторые кусочки SciPy из PyPy.

  2. Еще лучше, чистый python реализации необходимых мне функций распределения хи-квадрат под свободной лицензией?

  3. Способ преодолеть узкие места в CPython?Я знаю о Psyco, но он кажется не поддерживаемым и работает только на 32-битных системах.

1 Ответ

5 голосов
/ 08 декабря 2011

SciPy пока не работает на PyPy, хотя есть некоторая работа, чтобы сделать это относительно скоро, при условии, что вы захотите использовать его по ночам и внести небольшие изменения, чтобы вы использовали только поддерживаемое подмножество numpy (которое все равно быстро расширяется) , Я бы посоветовал вам просто попробовать портировать функции SciPy на Python, если время вас затягивает (они должны быть относительно простыми, но все же работают). На сайте PyPy также есть большой сбор средств, чтобы это произошло еще раньше:)

РЕДАКТИРОВАТЬ: Это Matplotlib работает на Pypy, встраивая CPython: http://baroquesoftware.com/~fijal/extreme_hacks.png

EDIT2: для примера прочитайте http://morepypy.blogspot.com/2011/12/plotting-using-matplotlib-from-pypy.html.

Ура, fijal

...