Я хочу обернуть небольшую библиотеку 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. - Я выставляю только эти два класса, а не целую библиотеку. Я не возражаю против некоторой предварительной работы, если это означает большую ремонтопригодность.
- При всех равных условиях я бы хотел минимизировать внешние зависимости. Тем не менее, я не против зависимостей, если это приводит к лучшему результату.