簡體   English   中英

boost.python解釋器實例化

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM