C++ python解释器实例化

C++ python解释器实例化,c++,boost-python,C++,Boost Python,我需要使用boost::python,但我希望在python交互完成后销毁解释器上下文 python解释器是如何以及何时实例化的,我如何销毁它分配的所有资源 Update显然Py\u Finalize不是为在同一过程中多次调用而设计的。这种方法似乎行不通:Py\u Finalize设计为每个进程只调用一次。我处理它的方法是将它放入应用程序的关闭钩子中,或者在主函数结束时运行它。您可以有多个解释器上下文实例,当它们的“\uuuu main\uuuuuu”对象(通过导入创建的对象(“\uuu mai

我需要使用
boost::python
,但我希望在python交互完成后销毁解释器上下文

python解释器是如何以及何时实例化的,我如何销毁它分配的所有资源


Update显然
Py\u Finalize
不是为在同一过程中多次调用而设计的。这种方法似乎行不通:

Py\u Finalize设计为每个进程只调用一次。我处理它的方法是将它放入应用程序的关闭钩子中,或者在主函数结束时运行它。您可以有多个解释器上下文实例,当它们的“\uuuu main\uuuuuu”对象(通过导入创建的对象(“\uuu main\uuuuuu”)被销毁时,这些实例将被清除。

Boost.Python不支持安全调用

根据本节:

请注意,此时不能调用
Py\u Finalize()
来停止解释器。这可能在boost.python的未来版本中得到修复

更多详细信息请参见。简而言之,一些内部Boost.Python对象将在
Py_Finalize()
期间保持活动状态,并且仅在Boost.Python卸载时尝试删除,从而导致对象尝试使用不存在的解释器删除