2013-11-02 70 views

回答

0

Py_Finalize設計爲每個進程只能調用一次。我處理它的方式是把它放到我們應用程序的關閉鉤子中,或者在主函數結束時運行它。你可以有多個解釋器上下文實例,當它們的「__main__」對象(由import(「__ main__」)創建的對象)被銷燬時,這些實例會被清除。

0

Boost.Python不支持安全呼叫Py_Finalize()

Embedding - Getting started部分:

注意,在這個時候,你不能調用Py_Finalize()停止解釋。這可能會在未來版本的boost.python中修復。

其他細節在TODO中註明。簡而言之,一些內部的Boost.Python對象在Py_Finalize()期間將保持活動狀態,並且僅在Boost.Python卸載時嘗試刪除,導致對象嘗試使用不存在的解釋器進行刪除。