首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Python 3.5.1,删除模块时不销毁全局变量

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

Stack Overflow用户
提问于 2016-09-19 11:25:15
回答 1查看 222关注 0票数 2

我有一个加载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测试代码:

代码语言:javascript
运行
复制
class Simple:  
     def __init__( self ):  
         print('Simple__init__')
     def __del__( self ):  
         print('Simple__del__') 

simple = Simple()
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-09-22 09:28:20

这个问题已经解决了。需要在Python3.4版本的PyDict_DelItemString之后调用PyGC_Collect。

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39564909

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档