Можно ли записывать в / из преобразований Python с помощью Cython?

Можно ли писать конвертеры в-python и from-python, используя Cython, как это возможно для boost.python?

Изменить (по запросу комментария, с более подробной информацией о том, почему мы хотели бы это):

В настоящее время у нас есть код, написанный на C++, который связан с Python через boost.python. В этом коде C++ мы имеем дело с Blitz::Array<>' с. В нашей текущей схеме абстракции код на Python использует NumPy ndarraysв то время как код в C++ использует Blitz::Arrays<>, Мы написали мост, который может конвертировать из numpy.ndarrayк Blitz::Array<>и наоборот, вполне прозрачно. Этот мост также может избежать копирования при некоторых обстоятельствах, что является бонусом.

Проблемы с этим подходом:

  1. Переносимость: компиляция для разных версий Python требует, чтобы Boost.Python компилировался для каждой версии Python;

  2. Документируемость: включение строк документации Python в код C++ не очень приятно. Это отговорило наших разработчиков внедрять красивую документацию. Это часто выглядит исправлением и неполным;

  3. Скорость сборки: компиляция шаблонов boost.python может быть довольно медленной. Мы делаем это параллельно, используя CMake для ускорения, но затем мы хотели бы создать стандартное яйцо Python с нашим проектом. Как вы, наверное, знаете, setuptools/distutils и CMake не очень хорошо сочетаются друг с другом, поэтому у нас есть какой-то отрывочный способ сделать что-то в этой области.

Итак, учитывая перспективы Cython, я подумал, что мы попробуем и найдем менее удачный способ решения всех этих проблем. У нас уже есть кодовая база, которая опирается на numpy.ndarray и я хотел бы извлечь из этого как можно больше, с минимальным написанием и максимальным повторным использованием нашей базы кода C++. Поэтому мой вопрос.

0 ответов

Другие вопросы по тегам