Cython
| Розробник: | Robert Bradshaw, Stefan Behnel та інші |
|---|---|
| Останній реліз: | 0.20 (18 січня 2014) |
| Під впливом від: | Pyrex |
| Ліцензія: | Apache License |
| Сторінка інтернет: | cython.org |
Cython — мова програмування, котра є розширеним варіантом мови Python, націленим на спрощення інтеграції з кодом на мові Сі. Синтаксис Cython дозволяє створювати розширення на мові Сі для проектів на мові Python так само просто, як писати код на Python. Cython розширює можливості Python засобами для прямого виклику функцій на мові Сі, підтримує визначення змінних з типами мови Сі і дозволяє компілювати підсумковий код мовою Cython в подання на мові Сі, яке потім збирається штатним системним компілятором.
Опис[ред. • ред. код]
Cython це компільована мова програмування, яка генерує модулі розширення CPython. Ці модулі можуть бути завантажені і використані як звичайний код на Python використовуючи оператор import. Cython написано на Python і він працює на Windows, Linux, і Mac OS X, створюючи вихідні файли, сумісні з CPython 2.4 – 3.4.
Він працює, як стандартний модуль Python. Тим не менш, його поведінка відрізняється від стандартних модулів написаних на Python, оскільки він транслюється в С. В результаті код працює швидко, оскільки для виконання практично всіх операцій він використовує інтерпретатор CPython та його стандартні бібліотеки. Вибраний механізм значно зекономив на час розробку Cython, але зробив основні модулі залежними від Python та його стандартних бібліотек.
Більша частина коду написана на C, за винятком невеликої заглушки-завантажувача яку написано на звичайному Python, оскільки спроби переписати її на чистому С викликають проблеми через не деякі не задокументовані фрагменти в коді інтерпретатора CPython . Тим не менш, це не є серйозною проблемою, оскільки, як сказано вище Cython залежить від інтерпретатора Python.
Приклад програми[ред. • ред. код]
Приклад програми hello world на Cython вилядає складніше ніж у більшості інших мов, через те, що він взаємодіє з Python C API та distutils . Принаймні, три файли необхідні для базового проекту:
setup.pyякий викликає процес збиранняdistutilsякий генерує модуль розширення- Головна програма на python для завантаження модуля розширення
- Файли з кодом на Cython
Наступний лістинг демонструє процес побудови та запуску:
# hello.pyx - модуль Python, цей код буде трансльовано в C через Cython.
def say_hello():
print "Hello World!"
# launch.py - Python stub loader, завантажує модуль який було створено в Cython.
# Цей код завжди інтерпретується як звичайний Python.
# Він не компілюється в C.
import hello
hello.say_hello()
# setup.py - не обов’язово, якщо код не буде розповсюджуватись
from distutils.core import setup
from Cython.Build import cythonize
setup(name = 'Hello world app',
ext_modules = cythonize("*.pyx"))
Дані команди збирають та запускають програму:
$ python setup.py build_ext --inplace
$ python launch.py



