C++ 嵌入python并多次运行

C++ 嵌入python并多次运行,c++,python,boost-python,C++,Python,Boost Python,我正在使用boost::python嵌入python,我是这样做的: void runCode(){ Py_Initialize(); //boost::python code goes here and embedded python code runs Py_Finalize(); } 它第一次运行得很好,但是当它再次运行时,我得到以下错误: LookupError:未知编码:utf8 而且代码没有按预期运行,非常感谢您的帮助。由于您没有得到专家的答案,我将从处理类

我正在使用boost::python嵌入python,我是这样做的:

void runCode(){
    Py_Initialize();
    //boost::python code goes here and embedded python code runs
    Py_Finalize();
}
它第一次运行得很好,但是当它再次运行时,我得到以下错误:

LookupError:未知编码:utf8


而且代码没有按预期运行,非常感谢您的帮助。

由于您没有得到专家的答案,我将从处理类似问题中学习。 Python与。如果由于某些错误需要重新启动解释器,或者希望运行多个独立的解释器,这是很不幸的

其中一个问题是资源和内存泄漏(引用上述链接):

bug和警告:动态加载的扩展模块由 Python不会被卸载。服务器分配的少量内存 Python解释器可能无法释放(如果发现泄漏,请报告 它)。对象之间的循环引用中占用的内存不可用 释放。扩展模块分配的某些内存可能无法释放。 某些扩展可能无法正常工作,如果它们的初始化例程 不止一次地被召唤;如果应用程序调用 Py_Initialize()和Py_Finalize()不止一次

另一个问题是许多模块都不支持这一点,例如可以看到我认为这是您面临的问题。

大多数Python应用程序似乎都解决了这个问题:

  • 通过在专用过程中运行发动机
  • 通过使用表示不同执行状态的(公共解释器的)

如果第二个对您有效,请继续。

只是对这一点的补充说明:从,您当前不应该调用
Py\u Finalize()
。他们不支持它。@sharth你是对的,我在没有使用Py_Finalize的情况下调用它,但这不是理想的解决方案