Очікує на перевірку

Cython

Матеріал з Вікіпедії — вільної енциклопедії.
Перейти до навігації Перейти до пошуку
Cython
Дата появи28 липня 2007
РозробникRobert Bradshaw, Stefan Behnel та інші
Останній реліз0.20 (18 січня 2014; 10 років тому (2014-01-18))
Під впливом відPyrex(інші мови)
Мова реалізаціїPython[1]
Операційна системаLinux, UNIX-подібні операційні системи, Windows[2] і macOS[2]
ЛіцензіяApache License
Репозиторій вихідного кодуgithub.com/cython/cython
Вебсайтcython.org

Cythonмова програмування, котра є розширеним варіантом мови Python, націленим на спрощення інтеграції з кодом на мові C. Синтаксис Cython дозволяє створювати розширення на C для проектів на мові Python так само просто, як писати код на Python. Cython розширює можливості Python засобами для прямого виклику функцій на C, підтримує визначення змінних з типами мови C і дозволяє компілювати підсумковий код мовою Cython в подання на C, яке потім збирається штатним системним компілятором.

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

Cython особливо популярний серед наукових користувачів Python, де він має "ідеальну аудиторію" за словами творця Python Гвідо ван Россума.[3]

Домен Cython не обмежується лише числовими обчисленнями. Наприклад, набір інструментів lxml XML написаний переважно на Cython, і, як і його попередник Pyrex, Cython використовується для забезпечення прив’язок Python для багатьох бібліотек C та C ++, таких як бібліотека обміну повідомленнями ZeroMQ.[4]

Cython також можна використовувати для розробки паралельних програм для багатоядерних процесорних машин; ця функція використовує бібліотеку OpenMP.[5]

Посилання

[ред. | ред. код]
  1. The cython Open Source Project on Open Hub: Languages Page — 2006.
  2. а б https://docs.cython.org/en/latest/src/quickstart/install.html
  3. Guido Van Rossum (21 березня 2011). Re: VM and Language summit info for those not at Pycon (and those that are!) (Message to the electronic mailing-list python-dev). Архів оригіналу за 20 березня 2012. Процитовано 5 травня 2011.
  4. ØMQ: Python binding. Архів оригіналу за 2 серпня 2019. Процитовано 14 вересня 2021.
  5. Zed Shaw (2017). Learn Python the hard way. ‎Addison-Wesley Professional. ISBN 978-0134692883. Архів оригіналу за 6 вересня 2021. Процитовано 14 вересня 2021. [Архівовано 2021-09-06 у Wayback Machine.]