Cython, NumPy и расширения C
Если вы усердно работаете, но все еще не можете достичь необходимой произво-
дительности, у вас есть и другие варианты.
Cython (http://cython.org/) — это гибрид языков Python и C, разработанный для
преобразования Python: в скомпилированный код языка С внесены некоторые
улучшения производительности. Эти аннотации относительно малы, они похожи
на объявление типов некоторых переменных, аргументов функций или возвраща-
емых функциями значений. Подобные подсказки сделают научные вычисления,
выполняющиеся в циклах, гораздо быстрее — в 1000 раз. Документацию и при-
меры можете найти в Cython wiki (https://github.com/cython/cython/wiki).
Из приложения В вы можете подробнее узнать о NumPy. Это математическая
библиотека Python, написанная для ускорения на С.
Многие части Python и его стандартной библиотеки написаны на С для скоро-
сти и обернуты кодом на Python для удобства. При написании приложений эти
приемы доступны и вам. Если вы знаете С и Python и действительно хотите, чтобы
ваш код «летал», напишите расширение на языке С — это труднее, но улучшение
оправдает затраченные усилия.
Управление исходным кодом
375
PyPy
Около 20 лет назад, когда язык Java только появился, он был медленным, как шнау-
цер, больной артритом. Но когда он стал дорого стоить компании Sun и прочим,
они вложили миллионы в оптимизацию интерпретатора Java и лежащей в его ос-
нове виртуальной машины Java (Java Virtual Machine, JVM), заимствуя приемы из
уже существовавших тогда языков Smalltalk и LISP. Компания Microsoft также
вложила много усилий в оптимизацию своего языка C# и .NET VM.
Языком Python никто не владеет, поэтому никто так сильно не старается сделать
его быстрее. Вы, возможно, используете стандартную реализацию Python. Она на-
писана на С и часто называется CPython (не путать с Cython).
Как и языки PHP, Perl и даже Java, Python не компилируется в машинный код,
он преобразуется в промежуточный язык (он называется байт-кодом или p-кодом),
который затем интерпретирует виртуальная машина.
PyPy (http://pypy.org/) — это новый интерпретатор Python, который пользуется
некоторыми приемами, ускорившими язык программирования Java. Тесты произ-
водительности интерпретатора (http://speed.pypy.org/) показывают, что PyPy в каж-
дом тесте быстрее CPython в среднем в шесть раз и до 20 раз в отдельных случаях.
Он работает с Python 2 и 3. Вы можете загрузить его и использовать вместо CPython.
PyPy постоянно улучшается и однажды может заменить CPython. Чтобы узнать,
подходит ли он вам, посетите его официальный сайт.
Управление исходным кодом
Когда вы работаете над небольшой группой программ, то обычно можете отслежи-
вать внесенные собственноручно изменения — до тех пор, пока не сделаете глупую
ошибку и не потеряете несколько дней работы. Системы управления исходным
кодом защитят ваш код от сил зла в лице вас самих. Если вы работаете в группе,
управление исходным кодом становится необходимостью. Для этой области было
создано множество коммерческих и бесплатных решений. Наиболее популярными
в мире открытого исходного кода (где и живет Python) являются Mercurial и Git.
Они оба являются примерами распределенных систем контроля версий, которые
создают несколько копий репозиториев кода. Ранние системы вроде Subversion