私はpython35.dllをロードするアプリケーションを持っています。 Python API PyImport_AddModuleを使用してpyファイルを実行します。 PyDict_DelItemStringを使用してモジュールを削除します。 pyファイルにはグローバルな情報があります。 PyDict_DelItemStringを呼び出してモジュールを削除すると、グローバル変数は破棄されません。グローバル変数は、Py_Finalizeを呼び出すときに破棄されます。遅すぎる。それはメモリリークを引き起こします。 Py_Initializeはアプリの起動時に呼び出されるため、Py_Finalizeはアプリのシャットダウン時に呼び出されます。Python 3.5.1、モジュールを削除すると、グローバル変数は破棄されません
しかし、python33.dllでは問題ありません。PyDict_DelItemStringを呼び出してモジュールを削除すると、グローバル変数が破棄される可能性があります。
この問題を解決するにはどうすればよいですか?回避策はありますか? Python35.dllを使用し、PyDict_DelItemStringを呼び出してモジュールを削除するときに、モジュール内のグローバル変数が自動的に解放されるようにする必要があります。この問題は解決され
class Simple:
def __init__(self):
print('Simple__init__')
def __del__(self):
print('Simple__del__')
simple = Simple()