我有一个嵌入Python解释器的C ++应用程序。代码中存在解释器可能被中断的点,我需要确保解释器处于“安全”状态以执行新代码。我只是调用Py_Finalize并重新初始化所有内容,除了我有一堆PyObject *引用,我需要保持有效。有没有这样做的功能,甚至是必要的?当我提到翻译被打断时,我的意思是一个seg。我的应用尝试从中恢复的错误或访问冲突。
答案 0 :(得分:2)
呃,尝试从段错误或访问冲突中“恢复”是非常危险的。你首先得到这些是有原因的,而且你的程序试图做一些它不应该尝试做的事情;因此它遇到了一个错误或无法预料的情况。
在Python解释器中没有规定在诸如上述情况下回滚到“安全点”。即使完成并重新初始化解释器,仍可能会使某些静态数据处于不一致状态。
如果您告诉我们您为什么要这样做,我们可能会建议替代方案。