Looking for cython Answers? Try Ask4KnowledgeBase
Looking for cython Keywords? Try Ask4Keywords

cythonНачало работы с cython


замечания

Что такое Китон?

Язык программирования Cython обогащает Python C-подобным статическим набором текста, возможностью прямого вызова функций C и несколькими другими функциями. Это позволяет достичь уровня C-уровня при использовании синтаксиса, подобного Python.

Как это работает?

Код Cython скомпилирован с использованием компилятора cython source-to-source для создания кода C или C ++, который, в свою очередь, может быть скомпилирован с использованием компилятора C. Это позволяет создавать расширения, которые могут быть импортированы из Python или исполняемых файлов.

Основной прирост производительности Cython может достигнуть, в отличие от чистых основ Python, минуя API CPython. Например, при добавлении двух целых чисел Python выполняет проверку типа для каждой переменной, находит функцию добавления, которая удовлетворяет найденным типам и вызывает эту функцию. В C-образном C-образном коде типы уже известны, и выполняется только один вызов функции. Следовательно, Китон особенно близок к математическим проблемам, в которых типы понятны.

Как использовать его для ускорения моего кода?

Обычный пример использования при попытке ускорить работу программы с помощью Cython заключается в том, чтобы профилировать код и перемещать вычислительно дорогие детали в компилируемые модули Cython. Это позволяет сохранить синтаксис Python для большей части кода и применить ускорение там, где это наиболее необходимо.

Привет, мир

Файл Cython pyx необходимо перевести на C-код ( cythonized ) и скомпилировать, прежде чем он будет использоваться с Python. Общий подход заключается в создании модуля расширения, который затем импортируется в программу Python.

Код

В этом примере мы создаем три файла:

  • hello.pyx содержит код Cython.
  • test.py - это скрипт Python, который использует расширение hello.
  • setup.py используется для компиляции кода Cython.

hello.pyx

from libc.math cimport pow

cdef double square_and_add (double x):
    """Compute x^2 + x as double.

    This is a cdef function that can be called from within
    a Cython program, but not from Python.
    """
    return pow(x, 2.0) + x

cpdef print_result (double x):
    """This is a cpdef function that can be called from Python."""
    print("({} ^ 2) + {} = {}".format(x, x, square_and_add(x)))
 

test.py

# Import the extension module hello.
import hello

# Call the print_result method 
hello.print_result(23.0)
 

setup.py

from distutils.core import Extension, setup
from Cython.Build import cythonize

# define an extension that will be cythonized and compiled
ext = Extension(name="hello", sources=["hello.pyx"])
setup(ext_modules=cythonize(ext))
 

составление

Это можно сделать, используя cython hello.pyx чтобы перевести код на C, а затем скомпилировать его с помощью gcc . Более простой способ - позволить distutils справиться с этим:

$ ls
hello.pyx  setup.py  test.py
$ python setup.py build_ext --inplace
$ ls
build  hello.c  hello.cpython-34m.so  hello.pyx  setup.py  test.py
 

Файл общего объекта (.so) можно импортировать и использовать из Python, так что теперь мы можем запустить test.py :

$ python test.py
(23.0 ^ 2) + 23.0 = 552.0 
 

Установка Cython

Для использования Cython необходимы две вещи. Сам пакет Cython, который содержит cython source-to-source и Cython, взаимодействует с несколькими библиотеками C и Python (например, numpy). Чтобы скомпилировать код C, сгенерированный компилятором cython , необходим компилятор C.

Шаг 1: Установка Cython

Система Агностик

Cython можно установить с несколькими системными системами управления пакетами. Они включают:

  1. PyPI через pip или easy_install:

    $ pip install cython
    $ easy_install cython
     
  2. anaconda используя conda:

    $ conda install cython
     
  3. Enthought canopy с помощью менеджера пакетов enpkg:

    $ enpkg cython
     

Также исходный код можно загрузить из github и установить вручную, используя:

$ python setup.py install
 

Ubuntu, Debian

Для Ubuntu cython пакеты cython и cython3 . Обратите внимание, что они предоставляют более старую версию, чем упомянутые выше параметры установки.

$ apt-get install cython cython3
 

Windows

Для Windows файл .whl, который может быть установлен с помощью pip, предоставляется третьей стороной. Подробные сведения об установке файла .whl в Windows можно найти здесь .


Шаг 2. Установка компилятора C

Для компиляции файлов C, созданных Cython, необходим компилятор для C и C ++. Компилятор gcc рекомендуется и может быть установлен следующим образом.

Ubuntu, Debian

build-essential пакет содержит все необходимое. Он может быть установлен из репозиториев, используя:

$ sudo apt-get install build-essential
 

MAC

Инструменты разработчика XCode содержат компилятор gcc.

Windows

MinGW (Minimalist GNU для Windows) содержит версию gcc для Windows. Также можно использовать компилятор из Visual Studio.