LINUX.ORG.RU

Вопрос по свзке Python и C++

 , , ,


1

1

В общем есть матан на numpy и прога с интерфейсом и логикой на C++. Для связки использую boost.python (не знаю за что буст ругают, но он меня столько раз выручал!).

В общем связывать решил отдельной либой (ибо к моему матану будет доступ от других софтин).
Но тут проблемка небольшая: внутри программы на C++ используются структуры с QVector'ами для хранения данных, которые должны быть рассчитаны в программе на Python. В свою очередь boost не умеет транслировать из стандартных и нет контейнеров в питонские листы.

И тут встает вопрос, как лучше сделать:
1) Можно ли как-нибудь использовать расширение Python написанное на C++ как библиотеку-интерфейс доступа к программе на Python, так и простое расширение для Python?
2) Или лучше тупо сделать библиотеку-интерфейс, которая будет транслировать типы данных C++ в Python и пускать часть написанную на Python? Т.е. расширение для Python не потребуется.

Всем спасибо за помощь!

★★★★★

Надеюсь станет понятнее, на словах это выглядит наверное корявее.

                                _____ <cpp>
                               /  (Берет тип для хранения
                              /     данных и использует либу
                             /      как интерфейс к Py-модулю)
            <lib> ----------<
(Расширение для Python      \
с кодом типа данных и        \
интерфейс к программе         ------ <py-модуль>
на Python)                     (использует библиотеку как
                                расширение и работает с общим
                                типом данных)
или
                                 _____ <cpp>
                                /  (Подключанет библиотеку и 
                               /    использую встроенный
                              /     конвертер для и
                             /      как интерфейс к Py-модулю)
            <lib> ----------<
(Расширение для Python      \
с кодом типа данных и        \
интерфейс к программе         ------ <py-модуль>
на Python)                     (Модулю всеравно что там в cpp.
                                Библиотка все данные c++
                                будет транслировать в
                                понятные для Python)

deterok ★★★★★
() автор топика

В свою очередь boost не умеет транслировать из стандартных и нет контейнеров в питонские листы.

мм, да, нет, но... функция, копирующая из QVector в boost::python::list занимает три строки. Сам напишешь или мне подсказать?

peacelove
()

ЯННП. Но из скромного личного опыта рулить сишной частью из питона гораздо удобней чем питоньей частью из С. Хотя с pyAPI под сями больших проблем нету, просто много букв получается.

AIv ★★★★★
()

Если возникает вопрос, откуда рулить - из C++ или Python, то стоит задуматься, а надо ли вообще иметь в проекте 2 ЯП.

peregrine ★★★★★
()

матан на numpy
и прога с интерфейсом и логикой на C++

Очевидно, что C++ здесь не нужен. Совсем.

bj
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.