为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

慕妹3146593 2021-10-26 15:58:44
我来自 R,我似乎无法弄清楚 python 中的这个超级基本问题。假设我在 R 中拟合了一个随机森林。它在一个名为rf. 它占用内存。如果我这样做rm(rf),当我查看htop或输入freeshell时,内存会被释放。如果我在 python 中并适合 aRandomForestRegressor并调用它rf,然后执行del rf,没有任何反应。我可以import gc再gc.collect()和什么也没有发生显然,python 太酷了,这样的事情不容易。怎么找回我的记忆?
查看完整描述

1 回答

?
茅侃侃

TA贡献1842条经验 获得超21个赞

这意味着你在某处有另一个引用。

如果您需要调试它,您可以使用print(sorted(globals()))print(sorted(locals()))列出您当前的引用。如果您熟悉gc,则可以使用gc.get_objects()来查看每个引用的对象。使用del删除你不需要的引用。当你没有对一个对象的引用时Cpython会自动进行垃圾回收。

这至少是理论......因为,您正在使用的模块也可以保留引用,并且由于您保留对模块的引用,因此不会被垃圾收集。您可以删除模块保存的引用(通过使用introspection)或del module完全删除。也许您的对象有一个close函数或其他必须执行以释放资源的函数(也许它是自动关闭的)。

不用说,引用保持是模块应该避免的事情。


查看完整回答
反对 回复 2021-10-26
  • 1 回答
  • 0 关注
  • 177 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号