Упаковка C ++ с Python - возвращение ссылок - PullRequest
0 голосов
/ 27 февраля 2020

Я хочу обернуть небольшую библиотеку C ++ для использования в Python. Я кратко прочитал о Python C -API, ctypes, Cython, SWIG, Boost. Python и CLIF. Какую (или другую) структуру мне следует использовать, учитывая мой конкретный c сценарий использования, описанный ниже?

Контекст: У меня есть многопроцессорная программа, которая осуществляет связь через shared память . Я написал Writer и Reader классы для взаимодействия с общей памятью и управления синхронизацией. У меня есть несколько программ на C ++, работающих вместе через общую память, и я хочу добавить программу Python на вечеринку. Его поведение при взаимодействии с разделяемой памятью должно быть таким же, как и в программах на C ++.

Замечания:

  • (main) Пакеты данных, хранящиеся в разделяемой память большая , поэтому я хочу избежать копирования при возврате к Python. В частности, метод Reader::read() возвращает ссылку const T&, поэтому клиент может напрямую читать с нее. Я хотел бы сохранить это поведение в классе Python.
  • Хотел бы напрямую выставить классы Writer() и Reader() как классы Python без повторной реализации logi c.
  • Я выставляю только эти два класса, а не целую библиотеку. Я не возражаю против некоторой предварительной работы, если это означает большую ремонтопригодность.
  • При всех равных условиях я бы хотел минимизировать внешние зависимости. Тем не менее, я не против зависимостей, если это приводит к лучшему результату.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...