Можно ли записывать в / из преобразований 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<>
и наоборот, вполне прозрачно. Этот мост также может избежать копирования при некоторых обстоятельствах, что является бонусом.
Проблемы с этим подходом:
Переносимость: компиляция для разных версий Python требует, чтобы Boost.Python компилировался для каждой версии Python;
Документируемость: включение строк документации Python в код C++ не очень приятно. Это отговорило наших разработчиков внедрять красивую документацию. Это часто выглядит исправлением и неполным;
Скорость сборки: компиляция шаблонов boost.python может быть довольно медленной. Мы делаем это параллельно, используя CMake для ускорения, но затем мы хотели бы создать стандартное яйцо Python с нашим проектом. Как вы, наверное, знаете, setuptools/distutils и CMake не очень хорошо сочетаются друг с другом, поэтому у нас есть какой-то отрывочный способ сделать что-то в этой области.
Итак, учитывая перспективы Cython, я подумал, что мы попробуем и найдем менее удачный способ решения всех этих проблем. У нас уже есть кодовая база, которая опирается на numpy.ndarray
и я хотел бы извлечь из этого как можно больше, с минимальным написанием и максимальным повторным использованием нашей базы кода C++. Поэтому мой вопрос.