В настоящее время я пишу привязки Python для библиотеки C ++, над которой я работаю. Библиотека читает некоторый двоичный формат файла, и скорость чтения очень важна. Оптимизируя скорость работы библиотеки, я заметил, что std :: vector (используемый в экземплярах, которые я читаю) потреблял много времени на обработку, поэтому я заменил их простыми массивами, выделенными на new [] (независимо от того, хорошая / мудрая вещь, вероятно, другой вопрос).
Теперь я застрял с проблемой, как предоставить Python доступ к этим массивам. Похоже, что в boost :: python нет встроенного решения (по крайней мере, я не смог его найти).
Пример кода для иллюстрации ситуации:
// Instance.cpp
class Instance
{
int * data;
int dataLength;
Instance ()
{
data = new int[10];
dataLength = 10;
}
};
// Class pythonBindings.cpp
BOOST_PYTHON_MODULE(db)
{
class_<Instance>("Instance", init<>())
.add_property("data", ........)
;
}
Полагаю, я мог бы использовать функцию-обертку, которая создает boost :: python :: list из массивов всякий раз, когда python хочет получить к ним доступ. Поскольку я совсем новичок в boost :: python, я решил спросить, есть ли какие-нибудь хорошие, стандартные или встроенные решения этой проблемы, прежде чем я начну взламывать.
Итак, как бы вы порекомендовали обернуть массив Instance
data
с помощью boost :: python?