Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/363.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/158.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
boost python公开和导入方法的时间成本 我遇到了一个使用Boost Python设施来扩展我的C++代码到Python的困难。我已经成功地编写了boost.python包装器。我还可以从Python访问C++对象,而不会有任何错误,另外,还可以使用Boost TAFL(“”)()函数调用C++中的Python文件(Mead)方法,而不会出现任何问题。p>_Python_C++_Boost_Boost Python - Fatal编程技术网

boost python公开和导入方法的时间成本 我遇到了一个使用Boost Python设施来扩展我的C++代码到Python的困难。我已经成功地编写了boost.python包装器。我还可以从Python访问C++对象,而不会有任何错误,另外,还可以使用Boost TAFL(“”)()函数调用C++中的Python文件(Mead)方法,而不会出现任何问题。p>

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方法在我的程序

我的问题是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")());