LINUX.ORG.RU

[python] C++ Binding

 


0

1

Возникла необходимость написать часть кода на C++ и заюзать его из python 2.7.2. В связи с чем возник вопрос с выбором либы для обёртывания C++ кода.

Гугл говорит что есть Boost::Python и SWIG (+ ещё пачка либ, но это основные или я не прав?). Кто уже озадачивался этим вопросом подскажите что юзабельнее.

Передаваться туда сюда будут массивы чисел типа int, double или структуры с аналогичными полями(числа, массивы чисел, возможно мэпы из чисел), возможно потребуется отдать из C++ мэпу. Никаких классов гонять не планируется.

Самое главный вопрос: Обёртки нормально работают с перечислениями? Ибо данных много(гигабайты), а ленивость иногда позволяет не улезать в swap.

На сколько актуально то, что тут написано(всётаки 2009 год): http://stackoverflow.com/questions/1492755/python-c-binding-library-comparison ?

★★★★★

Последнее исправление: Norgat (всего исправлений: 1)
Ответ на: комментарий от Norgat

Был такой опыт с boost::python. Прога на плюсах подготавливала окружение, публиковала свои объекты и запускала питоновскую обвязку. Полет нормальный. Даже одновременный дебаг работал и в плюсах и в питоне, естественно при запуске pydb в инициализации.

vega
()
Ответ на: комментарий от AIv

Что такое мэп из чисел

Каждому вектору(образу) я ставлю в соответствие число(id). Словарём будет множество пар (id,id), это множество разряжено, относительно начального списка векторов, поэтому массив избыточен.

что Вы понимаете под перечислением в данном контексте (код можно)?

Что-то я криво про перечисление написал. Имел ввиду аналог F#'овских Sequences. Код такого вида:

def foo():
    for i in xrange(10):
        yield i

За pdf спасибо, почитаю.

Norgat ★★★★★
() автор топика
Ответ на: комментарий от Norgat

std::map<int,int> я протаскивать не пробовал, но это возможно, если не через стандартное инстацирование шаблонов, то через написание обертки.

С генераторами неск сложнее, если делать их в питоне, то в С с ним можно работать через python API, можно их сделать в С (опять таки через python API) и выдать наружу как PyObject* но это все ИМНО содомия - куда быстрее будет работать свой (найденный у кого то) С++ объект реализующий такую штуку.

AIv ★★★★★
()
Ответ на: комментарий от AIv

Генератор сейчас на python есть и работает. Если его можно будет протащить в C++, то этого будет достаточно. Тащить генератор из C++ в python не собираюсь, так что тут всё в порядке)

Norgat ★★★★★
() автор топика
Ответ на: комментарий от Norgat

ТОгда нет проблем - дергаете метод next (так кажется), конвертите результат в С-шный тип.

AIv ★★★★★
()
Ответ на: комментарий от anonymous

неймфажина, дзесь за подписи банят

anonymous
()

Про sip уже писали? Хоть он, в основном, для Qt, но с с++ дружит отменно.

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