import()和exect_file()返回的对象的生命周期是多少?

时间:2012-09-25 06:49:34

标签: boost-python

以下是此示例的精简形式:http://www.boost.org/doc/libs/1_51_0/libs/python/doc/v2/exec.html#examples

从C ++调用的Python函数,存储在 script.py 文件中:

def greet():
   return 'Hello from Python!'

执行Python函数的C ++代码:

#include <iostream>
#include <string>
#include <boost/python.hpp>

using namespace boost::python;

void greet()
{ 
  object main = import("__main__");
  object global(main.attr("__dict__"));
  object result = exec_file("script.py", global, global);
  object greet = global["greet"];
  std::string message = extract<std::string>(greet());
  std::cout << message << std::endl;
}

我的问题是:我是否需要将全局结果对象保持活动才能调用< EM>迎接吗

1 个答案:

答案 0 :(得分:0)

不,你没有。通过greet对象所持有的引用保存所有需要活着的东西,你不需要在自己周围存放物体。