我在使用boost python工具将我的C ++代码扩展到Python时遇到了困难。我已经成功编写了boost.python包装器。我也可以从Python访问我的C ++对象而没有任何错误,此外还可以使用boost attr("")()函数从C ++中调用Python文件(模块)方法,没有任何问题。
我的问题是Python方法的执行时间。在我编写的Python代码中,对包装对象的引用大概是微秒。尽管调用Python方法所花费的时间大约是几毫秒,但它相对于我在Python中对我的包装C ++对象所做的引用数量的增加(并且只引用/赋值没有任何进一步的使用)。因此,我进行了一些搜索,我对这个增加的时间的假设是:
值得一提的是,在我的程序的每个执行周期中都调用了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)
;
调用Python模块方法(&#34;运行&#34;):
pyFile = import(fileName.c_str());
scope scope1(pyFile);
object pyNameSpace = scope1.attr("__dict__");
return extract<int>(pyFile.attr("run")());