python中的R类对象删除和内存释放?

我来自 R,我似乎无法弄清楚 python 中的这个超级基本问题。

假设我在 R 中拟合了一个随机森林。它在一个名为rf. 它占用内存。如果我这样做rm(rf),当我查看htop或输入freeshell时,内存会被释放。

如果我在 python 中并适合 aRandomForestRegressor并调用它rf,然后执行del rf没有任何反应

我可以import gcgc.collect()什么也没有发生

显然,python 太酷了,这样的事情不容易。怎么找回我的记忆?


慕妹3146593
浏览 178回答 1
1回答

茅侃侃

这意味着你在某处有另一个引用。如果您需要调试它,您可以使用print(sorted(globals()))和print(sorted(locals()))列出您当前的引用。如果您熟悉gc,则可以使用gc.get_objects()来查看每个引用的对象。使用del删除你不需要的引用。当你没有对一个对象的引用时Cpython会自动进行垃圾回收。这至少是理论......因为,您正在使用的模块也可以保留引用,并且由于您保留对模块的引用,因此不会被垃圾收集。您可以删除模块保存的引用(通过使用introspection)或del module完全删除。也许您的对象有一个close函数或其他必须执行以释放资源的函数(也许它是自动关闭的)。不用说,引用保持是模块应该避免的事情。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python