0

を使用する必要がありますboost::pythonが、Python の対話が終了した後にインタープリター コンテキストを破棄したいと考えています。

Python インタープリターがインスタンス化される正確な方法と時期、およびそれによって割り当てられたすべてのリソースを破棄するにはどうすればよいですか?

UpdateどうやらPy_Finalize、同じプロセスで何度も呼び出されるようには設計されていません。このアプローチはうまくいかないようです: http://docs.python.org/2/c-api/init.html#l2h-652

4

2 に答える 2

0

Boost.Python は安全な呼び出しをサポートしていませんPy_Finalize()

埋め込み- はじめにセクションによると:

この時点でPy_Finalize()、インタープリターを停止するために呼び出してはならないことに注意してください。これは、boost.python の将来のバージョンで修正される可能性があります。

追加の詳細はTODOに記載されています。つまり、Boost.Python の一部の内部オブジェクトは実行中も存続しPy_Finalize()、Boost.Python のアンロード時にのみ削除を試み、存在しないインタープリターを使用してオブジェクトを削除しようとします。

于 2013-11-04T15:01:35.263 に答える