[英]boost.python interpreter instantiation
我需要使用boost::python
,但是我想在python交互完成后銷毀解釋器上下文。
實例化python解釋器的方式和時間,以及如何銷毀它分配的所有資源?
顯然, 更新 Py_Finalize
不能在同一過程中多次調用。 看來這種方法行不通: http : //docs.python.org/2/c-api/init.html#l2h-652
Py_Finalize設計為每個進程僅被調用一次。 我處理它的方法是將其放入應用程序的關閉掛鈎中,或者在主要功能的末尾運行它。 您可以具有解釋器上下文的多個實例,並且銷毀了它們的“ __main__”對象(由import(“ __ main__”)創建的對象)后,這些實例就會被清理。
Boost.Python不支持安全地調用Py_Finalize()
。
根據“ 嵌入-入門”部分:
請注意,此時您不得調用
Py_Finalize()
來停止解釋器。 這可能會在boost.python的未來版本中修復。
其他細節在TODO中有說明。 簡而言之,一些內部Boost.Python對象將在Py_Finalize()
期間保持活動狀態,並且僅在Boost.Python卸載時嘗試刪除,從而導致這些對象嘗試使用不存在的解釋器進行刪除。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.