Cython

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

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

Опис

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 Гвідо ван Россума.[1]

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

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

Посилання

  1. 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). Процитовано 5 травня 2011.
  2. ØMQ: Python binding.
  3. Zed Shaw (2017). Learn Python the hard way. ‎Addison-Wesley Professional. ISBN 978-0134692883.
This article is issued from Wikipedia. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.