繁体   English   中英

在C ++中嵌入Python:解释器在整个执行过程中的持久性

[英]Embeding Python in C++: persistence of interpreter across execution

使用Py_Initialize(),我们可以在C ++程序中启动python解释器。 但是,由于该函数不返回任何内容,因此我们不能在不同的程序中使用相同的解释器。 有没有办法在一个C ++程序中调用Py_Initialize(),使解释器持久化并在其他C ++程序中使用它(而无需再次调用Py_Initialize())?

编辑:更具体地说,是否有办法获取python解释器的实例并将其作为参数传递给另一个执行,并使用它运行python脚本。

否。CPython解释器本身不能那样工作。 没有独特的解释器对象,而是带有状态API的一组浮动全局变量。 更糟糕的是,Python代码可以加载任意其他的库,这些库的状态(通常)绝对不能持久。

您可以做的是腌制现有变量。 有时这可以使您接近某个地方。 那实际上不是托管问题,而是Python问题。 当然,您可以自然地确保托管Python的C代码确保在“真实” Python代码完成执行之后执行序列化步骤。 如何在当前python会话中保存所有变量? 可能是一个起点。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM