2016-09-19 93 views
2

我有一個應用程序加載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刪除模塊時,模塊中的全局變量可以自動釋放。

這裏是Python測試代碼:

class Simple: 
    def __init__(self): 
     print('Simple__init__') 
    def __del__(self): 
     print('Simple__del__') 

simple = Simple() 

回答