自动释放python中不再使用的变量的内存

自动释放python中不再使用的变量的内存,python,pandas,memory,del,Python,Pandas,Memory,Del,我是Python新手。 比方说,我使用大熊猫数据帧。 我的代码看起来像: all_data = pd.read_csv(huge_file_name) part_data = all_data.loc['ColumnName1', 'ColumnName2','ColumnName3'] data_filtered = part_data.loc[:,part_data['ColumnName2']==-1] 等等。 python可以通过某种方式删除所有不再使用的_数据、部分_数据和其他变量吗

我是Python新手。 比方说,我使用大熊猫数据帧。 我的代码看起来像:

all_data = pd.read_csv(huge_file_name)
part_data = all_data.loc['ColumnName1', 'ColumnName2','ColumnName3']
data_filtered = part_data.loc[:,part_data['ColumnName2']==-1]
等等。 python可以通过某种方式删除所有不再使用的_数据、部分_数据和其他变量吗? 我可以编写
delvar\u name
,但它会将代码更改为非常脏。 我也可以使用相同的名称来处理所有变量,但看起来也不太好。
提前谢谢大家

使用
del
关键字是一种方法;我不确定你对代码“脏”的担心还有多少要做。Python的人喜欢这样说,这就是一个例子

否则,在函数范围内声明中间变量,当函数终止时,这些变量使用的空间将被释放(或者标记为“垃圾收集”;参见下文)

所以你可以:

导入gc
all_data=pd.read_csv(大型文件名)
part_data=all_data.loc['ColumnName1','ColumnName2','ColumnName3']
数据过滤=部分数据。loc[:,部分数据['ColumnName2']=-1]
删除所有数据,部分数据
#如果你不耐烦于释放你的记忆,比如现在
gc.collect()
或者你可以:

导入gc
def过滤器_数据(填充):
所有数据=pd.read\U csv(填充)
part_data=all_data.loc['ColumnName1','ColumnName2','ColumnName3']
返回part_data.loc[:,part_data['ColumnName2']=-1]
数据过滤=过滤数据(大文件名)
#强制立即对范围外变量进行垃圾收集
gc.collect()

del
关键字从本地作用域释放变量,以便(最终)对其进行垃圾收集,但当变量超出作用域时释放的内存可能不会立即返回到操作系统。AMC很有帮助地向您指出了详细信息

垃圾收集策略是博士级的计算机科学知识,但我的直觉是,只有当Python运行时受到释放内存的“压力”时,才会触发GC;与中一样,新的变量声明需要使用一些以前由范围外变量使用的内存

您很小心地指出,这是一个正在读取到单个(Pandas)数据结构中的大型CSV文件,但请注意,超出范围的变量通常会自动进行垃圾收集,并且通常您不需要自己对该过程进行微管理


您可能会发现Python中垃圾收集的一些背景知识很有启发性,并且讨论了
del
有用的其他时间(例如从列表中删除片段)。

这是否回答了您的问题?什么是
all_data.loc['ColumnName1'、'ColumnName2'、'ColumnName3']