删除一个对象似乎没有释放它在python中的内存

时间:2018-02-13 13:17:11

标签: python memory memory-management out-of-memory

我正在运行一个脚本,当它在多个大型DataFrame对象上运行时会占用大量内存。由于我不断获得MemoryError例外,我认为我需要在运行时更好地清理内存,因为从技术上讲,应该有足够的内存来容纳所有相关对象。但是,它似乎没有起作用。

在我的代码的以下小节中:

print("Before deleting df: {}".format(get_mem_use()))
del df
print("After deleting df: {}".format(get_mem_use()))

输出结果为:

Before deleting df: 185323520
After deleting df: 185323520

其中:

def get_mem_use():
    """Get the currently used rss memory."""
    process =  psutil.Process(os.getpid())
    return process.memory_info().rss

因此,删除数据帧似乎不会改变内存使用情况。一旦它知道我的代码中不再引用数据帧,或者我删除它错了,它是否会被解释器先发制人地删除?

0 个答案:

没有答案