Cython и C++ в IPython

В прошлом посте было описано подключение библиотеки на С. Здесь же представлен код для подключения библиотеки на C++. Преимущества C++ очевидны, поддержка классов, множество шаблонов и других улучшений, о которых лучше всего расскажет Вики.

За основу берем:

  • Linux
  • Python 3.5
  • Ipython (Jupyter Notebook)
  • Файл с кодом на C++

Первым делом определяем директорию и создаем новый блокнот IPython. В эту директорию кладем файл [code]cpp.cpp[/code] с кодом на C++.

[code c]

[/code]
файл cpp.cpp, код на C++

Далее будем работать в блокноте Ipython и все куски кода вставляем в отдельные ячейки. Включаем cython-магию в ipython.

[code python]

[/code]
ipython, ячейка 1

Создаем файл [code]cpp_call.pyx[/code] с заголовком функции из C++. Теперь, так как мы будет кидать туда-сюда строку, подключим необходимый класс из C++.

[code python]

[/code]
ipython, ячейка 2

Создаем python-скрипт [code]setup_cpp.py[/code] для компиляции библиотеки и заголовочного файла в python-пакет. Здесь необходимо указать язык подключаемой библиотеки, чтобы был использован нужный компилятор.

[code python]

[/code]
ipython, ячейка 3

Запускаем созданный на предыдущем шаге файл [code]setup_cpp.py[/code] для компиляции в текущую директорию C++-библиотеки вместе с заголовочным файлом и оберткой от Cython.

[code python]

[/code]
ipython, ячейка 4

Импортируем получившийся класс и вызываем C++-функцию.

[code python]

[/code]
ipython, ячейка 5

Репозиторий с кодом.