Разработчики из Института астрономии и исследовательской лаборатории космологии Швейцарской высшей технической школы Цюриха открыли исходные тексты проекта HOPE, разработанного для ускорения выполнения программных систем на языке Python, используемых для астрономических вычислений. Код проекта распространяется под лицензией GPLv3.

HOPE представляет собой JIT-компилятор, оформленный в виде модуля на языке Python, транслирующий специально отмеченные блоки кода в представление на языке C++ и на лету компилирующий их в машинный код. При первом запуске Python-скрипта при помощи пакета setuptools и штатного C++ инструментария выполняется компиляция HOPE-блоков в форму разделяемой библиотеки, после чего результат кэшируется при последующих вызовах. Обрабатываемые при помощи HOPE функции помечаются специальным декоратором "@jit" или вызываются с использованием функции jit(), например:


from hope import jit

@jit
def poly(x, y, a):


x1 = x - a


y[:] = x1 + x1 * x1

или

def sum(x, y):


return x + y

sum_opt = jit(sum)

Внутри компилируемых функций допускается использование специального подмножества языка Python с поддержкой явного определения типов, предоставляющего достаточные возможности для научных вычислений. Выигрыш в производительности при использовании HOPE по сравнению с обычным Python может достигать десятков раз - скорость выполнения скомпилированных функций приближается по производительности к программам на С++.



Источник: http://www.opennet.ru/opennews/art.shtml?num=40869