我是 boost.python 的新手,并且制作了一个简单的函数,用于将列表从 python 传递到 C++ 向量:
void SetXValues(boost::python::list xl){
int n = len((xl));
xvals.resize(n);
for(unsigned int i=0; i<n; i++){
xvals[i] = boost::python::extract<double>((xl)[i]);
}
}
xvals 是一个 C++ STL 向量。这个函数有效,我可以将 python 列表加载到 C++ 中,但它似乎非常慢。
我做的一个小速度测试是用 C++ 和纯 Python 编写一个分箱算法。结果表明,当包含从 Python 传递数据的时间时,C++ 方法的速度仅快 5 倍,但当然单独的分箱算法要快得多(74 倍)。
那么有没有什么办法可以改进上面的功能,让它更有效率呢?