2016-09-19 46 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() 

回答