Boost 文档没有指定这一点。当我使用 boost::python::import , 指定的模块到底导入到哪里了?我的猜测是在 '__main__'
中(只是为了确定)。
此外,当模块对象超出范围时会发生什么?考虑到 Boost 文档中的措辞——“返回:一个包含对导入模块的引用的对象实例”——我猜只有引用超出范围,模块对象仍然在 '__main__'
(或导入的任何地方)。
最佳答案
底层机制是PyImport_ImportModule
,不,它不会触及 __main__
。成功导入的模块被插入到sys.modules
dict,因此当您 DECREF 函数返回的内容时,该对象不会被释放——至少还有一个引用是活着的。
关于c++ - 在 boost::python::import 期间和之后会发生什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6816373/