Python 用の C 拡張モジュールがあります。
モジュールが初期化されると、C コードでのみ使用するメモリの一部を malloc() します。
モジュールが解放されたら、このメモリを解放したいと思います。
Python 3 には、まさに私が欲しいものである PyModuleDef 構造体に m_free メンバーがあります。問題は、Python 2 で同等の機能が見つからないことです。
Python 2 で malloc されたメモリを解放するにはどうすればよいですか?
直接同等のものはないと思います。そのため、m_free が 3.0 で導入されました。詳細については、以下を参照pep 3121
してください。
現在、拡張モジュールは通常 1 回初期化され、その後永久に「有効」になります。唯一の例外は、 Py_Finalize() が呼び出されたときです: その後、初期化ルーチンが 2 度目に呼び出されます。これは、リソース管理の観点からは好ましくありません。初期化が呼び出されるたびにメモリやその他のリソースが割り当てられる可能性がありますが、それらを再利用する方法はありません。その結果、現在のところ、Python が割り当てたすべてのリソースを完全に解放する方法はありません。