【问题标题】:Python 3.5.1, the global variable is not destroyed when delete the modulePython 3.5.1,删除模块时不破坏全局变量
【发布时间】:2016-09-19 03:25:15
【问题描述】:

我有一个加载 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()

【问题讨论】:

    标签: python python-3.x pyobject


    【解决方案1】:

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

    详情请阅读http://bugs.python.org/issue28202

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-03-15
      • 2016-02-10
      • 2017-06-02
      • 1970-01-01
      • 2022-01-06
      • 2015-03-07
      • 2020-08-25
      • 1970-01-01
      相关资源
      最近更新 更多