Python 3.5.1、删除模块时不销毁全局变量

Python 3.5.1, the global variable is not destroyed when delete the module

我有一个应用正在加载 python35.dll。使用pythonAPIPyImport_AddModule到运行一个py文件。并使用 PyDict_DelItemString 删除模块。 py文件中有一个global vailable。调用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()

此问题已解决。需要在 PyDict_DelItemString 之后用 Python post 3.4 版本调用 PyGC_Collect。

详细信息请阅读http://bugs.python.org/issue28202