Простой Python. современный стиль программирования - читать онлайн бесплатно полную версию книги . Страница 293

Используйте эти идеи, чтобы сделать свой код быстрее.

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