我应该从变量资源管理器中删除不必要的变量吗?

时间:2021-06-10 15:29:06

标签: python performance spyder

我看到了 somewhat similar question for R,但我没有找到任何关于 Python 的建议,特别是使用 Spyder 控制台的建议。

如果我在脚本中实现代码以过滤掉变量资源管理器中不再需要的变量,它会加快程序执行速度吗?我不确定这是否是养成的好习惯。

例如,如果我使用 pandas 进行多文件导入,如下所示:

import pandas as pd
import glob

path = r'C:\Desktop\files'
all_files = glob.glob(path + "/*.csv")

然后,例如,将所有文件合并为一个数据帧:

li = []

for filename in all_files:
    df = pd.read_csv(filename, index_col=None, header=0)
    li.append(df)

final = pd.concat(li, axis=1, ignore_index=True)

现在我有了进一步分析所需的数据框 final,但我的变量资源管理器中包含了不再需要的变量,即 all_filesdffilename、{ {1}} 和 li

我可以使用 path 删除脚本中的特定变量,但这样做会提高脚本的执行速度/效率吗?

1 个答案:

答案 0 :(得分:0)

您可以考虑的一项改进是使用生成器而不是 li 列表:

def parts_generator():
    for filename in all_files:
        df = pd.read_csv(filename, index_col=None, header=0)
        yield df

final = pd.concat(parts_generator(), axis=1, ignore_index=True)

以这种方式,而不是分配整个数据帧列表(可能会占用大量内存),然后将其连接起来创建列表中数据的有效副本,您最多只能为最终数据帧分配内存+ 最大块的内存。

关于生成器和神奇的 yield 关键字,您可以read here