boost python公开和导入方法的时间成本 我遇到了一个使用Boost Python设施来扩展我的C++代码到Python的困难。我已经成功地编写了boost.python包装器。我还可以从Python访问C++对象,而不会有任何错误,另外,还可以使用Boost TAFL(“”)()函数调用C++中的Python文件(Mead)方法,而不会出现任何问题。p>
我的问题是Python方法的执行时间。如我所述,在Python代码中,对包装对象的引用大约为微秒。虽然调用Python方法的时间大约为毫秒,但相对于Python中对我包裹的C++对象(仅引用/分配不再使用)的引用数量而言,它增加了。因此,我进行了一些搜索,我对这一增长时间的假设是:boost python公开和导入方法的时间成本 我遇到了一个使用Boost Python设施来扩展我的C++代码到Python的困难。我已经成功地编写了boost.python包装器。我还可以从Python访问C++对象,而不会有任何错误,另外,还可以使用Boost TAFL(“”)()函数调用C++中的Python文件(Mead)方法,而不会出现任何问题。p>,python,c++,boost,boost-python,Python,C++,Boost,Boost Python,我的问题是Python方法的执行时间。如我所述,在Python代码中,对包装对象的引用大约为微秒。虽然调用Python方法的时间大约为毫秒,但相对于Python中对我包裹的C++对象(仅引用/分配不再使用)的引用数量而言,它增加了。因此,我进行了一些搜索,我对这一增长时间的假设是: 某些引用策略(默认策略)在从Python代码返回时执行一些不必要的操作,从而导致此问题。所以我可能在包装上做错了什么 Python调用方法有一些开销,可能有一些我不知道的选项 值得一提的是,Python方法在我的程序
class_<Vertex<> >("Vertex")
.def(init<float, float>())
.def_readwrite("x", &Vertex<>::x)
.def_readwrite("y", &Vertex<>::y)
.def("abs", &Vertex<>::abs)
.def("angle", &Vertex<>::angle)
.def(self - self)
.def(self -= self)
;
类(“顶点”)
.def(init())
.def_readwrite(“x”和顶点::x)
.def_readwrite(“y”和顶点::y)
.def(“abs”和顶点::abs)
.def(“角度”和顶点::角度)
.def(self-self)
.def(self-=self)
;
调用Python模块方法(即“run”):
pyFile=import(fileName.c_str());
范围1(pyFile);
对象pyNameSpace=scope1.attr(“_dict__”);
返回摘录(pyFile.attr(“run”)();
pyFile = import(fileName.c_str());
scope scope1(pyFile);
object pyNameSpace = scope1.attr("__dict__");
return extract<int>(pyFile.attr("run")());