Cython

Матеріал з Вікіпедії — вільної енциклопедії.
Перейти до: навігація, пошук
Cython
Дата появи: 28 липня 2007
Розробник: Robert Bradshaw, Stefan Behnel та інші
Останній реліз: 0.20 (18 січня 2014; 1195 днів тому)
Під впливом від: Pyrex
ОС: Linux
Ліцензія: Apache License
формат файлу, Just Solve the File Format Problem Cython_(Pyrex)
Сайт: 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

Посилання[ред.ред. код]