我目前正在为我正在开发的 c++ 库编写 python 绑定。该库读取一些二进制文件格式,读取速度非常重要。在优化库以提高速度时,我注意到 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", ........)
;
}
我想我可以使用一个包装函数,只要 python 想要访问它们,就可以从数组中构造一个 boost::python::list 。由于我对 boost::python 还很陌生,所以我想在开始破解之前,我应该询问是否有任何好的、标准或内置的解决方案来解决这个问题。
那么,你会如何推荐使用 boost::python 包装数组呢Instance
?data