在预处理过程中,我创建了很多 Dataframe ,由于我的内存容量有限,所以我希望删除所有不必要的 Dataframe ,以避免在scikit-learn中运行GRIDSEARCHCV时内存不足。
1)是否有仅列出当前加载到内存中的所有 Dataframe 的功能?
我试过dir(),但它给出了很多其他对象,而不是 Dataframe 。
2)我创建了要删除的 Dataframe 列表
del_df=[Gender_dummies,
capsule_trans,
col,
concat_df_list,
coup_CAPSULE_dummies]
和运行
for i in del_df:
del (i)
但这不是删除 Dataframe ,而是像下面这样逐个删除 Dataframe ,就是从内存中删除 Dataframe 。
del Gender_dummies
del col
4条答案
按热度按时间aurhwmvo1#
del
语句不删除示例,它只删除名称。当执行
del i
时,您只删除了名称 i -但示例仍然绑定到其他名称,因此它不会被垃圾收集。如果要释放内存,必须垃圾收集 Dataframe ,即删除对它们的所有引用。
如果你动态地创建了你的日期帧到列表中,那么移除那个列表将触发垃圾收集。
如果创建了一些变量,则必须将其全部删除。
fruv7luv2#
在python中,自动垃圾收集会释放变量(PandasDataFrame也只是python的另一个对象),有不同的垃圾收集策略可以调整(需要大量的学习)。
您可以使用手动触发垃圾收集
但是不鼓励频繁调用垃圾收集,因为这是一个开销很大的操作,而且可能会影响性能。
Reference
xtfmy6hx3#
这将删除 Dataframe 并释放RAM/内存
Dataframe 将被显式设置为空
在上述声明中
首先, Dataframe 的self引用被删除,这意味着在垃圾收集器(gc.collect())收集了 Dataframe 的所有引用,然后显式地将所有引用设置为空 Dataframe 之后, Dataframe 对python不再可用。
https://stackify.com/python-garbage-collection/中详细解释了垃圾收集器的工作原理
czfnxgou4#
我在笔记本中使用中间 Dataframe ,您可以简单地写:
其中以前的所有列和行现在都消失了。
事实上,它在那里真的是最小的在这一点上。