Обертывание части кода C ++ в Python - PullRequest
1 голос
/ 06 марта 2012

У меня есть фрагмент кода C ++, который генерирует данные.Я хочу представить данные в Python.Но это не так тривиально, как кажется ...

Скажем, этот C ++ компилируется в двоичные файлы cppcode.Из-за сложного способа настройки фреймворка я могу запустить код только как

./cppcode {command line arguments} 

Внутри cppcode он генерирует данные, к которым я хочу получить доступ из Python.Я знаю, могу ли я каким-то образом переписать программу как

CppClass cpp; 
cpp.run( args );

. Тогда я могу обернуть CppClass с помощью Boost Python, построить экземпляр, запустить с аргументами и получить доступ к данным в генерировании.

Но теперь, когда я могу запустить код только как ./cppcode {command line arguments}

Я не могу просто вызвать ./cppcode из Python, потому что после завершения ./cppcode его память будет вызыватьсясистема, и я не могу видеть это из Python больше.Есть ли способ обойти это?

Я могу подумать: (1) позвольте ./cppcode записать данные на диск и позволить python их прочитать.(2) выгрузить данные в stdout и передать в скрипт Python.Но в любом случае я должен сделать какой-то анализ строки в Python, который может быть медленным.Есть ли способ обойти это?

1 Ответ

1 голос
/ 06 марта 2012

Вы можете записать данные в формате JSON из ccpcode на диск, а затем просто использовать simplejson из python для их анализа. Тогда вам не придется писать собственные парсеры.

Вот несколько примеров модулей C ++ JSON: https://stackoverflow.com/questions/245973/whats-the-best-c-json-parser

...