我有一个正在加载python35.dll的应用程序。使用python API PyImport_AddModule运行py文件。并使用PyDict_DelItemString删除模块。在py文件中有一个全局可用的。调用PyDict_DelItemString删除模块时,不会销毁全局变量。调用Py_Finalize时,全局变量被销毁。太晚了。导致内存泄漏。因为Py_Initialize是在应用程序启动时调用的,所以Py_Finalize是在应用程序关闭时调用的。在
但是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()
这个问题解决了。在pythonpost3.4版本的PyDict_DelItemString之后需要调用PyGC_Collect。在
有关详细信息,请阅读http://bugs.python.org/issue28202。在
相关问题 更多 >
编程相关推荐