Пет проекта, които помагат за ускоряване на кода на Python

  • Можете да използвате друга среда за езика (най-вероятно имате CPython). Това е доста сериозна стъпка, но ефектът трябва да е подходящ.
  • Възможно е да пренапишете съществуващ код на Python, като го оптимизирате за по-голяма скорост. Това, разбира се, ще изисква много труд.

Ето пет проекта, които са се опитали да решат този проблем по един от тези два начина.

От всички кандидати да заменят CPython, PyPy се откроява най-много. Quora, например, го използва в производството. Може би има всички шансове да се превърне в среда по подразбиране поради отличната си съвместимост със съществуващия код.

Този проект, който беше спонсориран от Dropbox, използва рамката LLVM (Low Level Virtual Machine) за компилатор, който също използва JIT. Ако сравним с PyPy, Pyston все още е само на начално ниво на разработка - текущата версия вече е 0.5.1 и не поддържа всички функции на езика.

Cython е добавка на Python, специална версия на езика, която се компилира в C и взаимодейства с C/C++ код. Това е един от начините за писане на C разширения за Python (така че секции от код, които изискват специална скорост, могат да бъдат внедрени). Въпреки това, той може да се използва и отделно от обикновения Python. Обратната страна на монетата е, че мигрирането на съществуваща кодова база няма да бъде напълно автоматично - технически вече не пишете на Python.

Cython е доста разпространен и се използва в много библиотеки. Така например някои алгоритми в scikit-learn са написани специално в Cython за подобряване на производителността.

Numba съчетава двата предишни подхода. От Cython тя взема идеята, че частите от езика, които имат най-голяма нужда от това, трябва да бъдат ускорени (напр.обвързана с процесора математика); точно като PyPy или Pyston, той го прави с LLVM. Функциите, компилирани от Numba, могат да бъдат маркирани със специални декоратори и Numba ще работи, за да ги ускори заедно с NumPy. Numba обаче не използва JIT, така че отнема допълнително време за компилиране.