Python 删除并释放单个数据帧的内存

Python 删除并释放单个数据帧的内存,python,pandas,memory,Python,Pandas,Memory,我正在熊猫城运行一条很长的ETL管道。我必须创建不同的数据帧,我想为一些数据帧释放内存 我一直在阅读如何释放内存,我发现运行此命令不会释放内存: del dataframe 在这个链接之后:,其中一个答案说del语句并没有删除实例,它只是删除一个名称 在回答中,他们说将数据帧放入列表,然后删除列表: lst = [pd.DataFrame(), pd.DataFrame(), pd.DataFrame()] del lst 如果我只想发布一个数据帧,我需要将其放入列表中,然后删除如下列表

我正在熊猫城运行一条很长的ETL管道。我必须创建不同的数据帧,我想为一些数据帧释放内存

我一直在阅读如何释放内存,我发现运行此命令不会释放内存:

del dataframe
在这个链接之后:,其中一个答案说del语句并没有删除实例,它只是删除一个名称

在回答中,他们说将数据帧放入列表,然后删除列表:

lst = [pd.DataFrame(), pd.DataFrame(), pd.DataFrame()]
del lst  
如果我只想发布一个数据帧,我需要将其放入列表中,然后删除如下列表:

lst = [pd.DataFrame()]
del lst
我也看到了这个问题:

有不同的答案,如:

import gc
del df_1
gc.collect()

就在数据帧使用的末尾

df = ""

或者有更好的方法来实现这一点?

从包含的原始链接,您必须在列表中包含变量,删除变量,然后删除列表。如果只是添加到列表中,则删除列表时不会删除原始数据帧

导入熊猫
导入psutil
导入gc
psutil.virtual_memory().可用*100/psutil.virtual_memory().总计
>> 68.44267845153809
df=pd.read_csv('pythonSRC/bigFile.txt',sep='|')
len(df)
>> 20082056
psutil.virtual_memory().可用*100/psutil.virtual_memory().总计
>> 56.380510330200195
lst=[df]
德尔斯特
psutil.virtual_memory().可用*100/psutil.virtual_memory().总计
>> 56.22601509094238
lst=[df]
德尔夫
德尔斯特
psutil.virtual_memory().可用*100/psutil.virtual_memory().总计
>> 76.77617073059082
gc.collect()
>> 0
我还尝试删除数据帧并使用gc.collect()获得相同的结果

del df
gc.collect()
psutil.virtual_memory().available * 100 / psutil.virtual_memory().total
>> 76.59363746643066

但是,将数据帧添加到列表并删除列表和变量的执行时间比调用
gc.collect()
要快一些。我使用
time.time()
来测量差异,而
gc.collect()
几乎慢了整整一秒钟

您可能希望检查垃圾收集器