数据为什么会有不同的磁盘与内存占用空间?

时间:2017-06-25 22:55:37

标签: python memory

"我们将2015年Yellow Cab NYC出租车数据作为S3上的12个CSV文件......这些数据在磁盘上约为20GB,在RAM中约为60GB。"

我在尝试dask时遇到了这个观察,这是一个用于处理内存数据集的python框架。

有人可以向我解释为什么会有3倍的差异吗? id想象它与python对象有关但不是100%肯定。

谢谢!

1 个答案:

答案 0 :(得分:1)

您正在从磁盘上的CSV读取内存中的结构化数据框对象。这两件事情完全不相似。磁盘上的CSV数据是单个文本字符串。内存中的数据是一个复杂的数据结构,有多种数据类型,内部指针等。

CSV本身没有占用任何RAM。有一个复杂的数据结构占用RAM,它使用来自磁盘上的CSV的数据填充。这根本不是一回事。

为了说明差异,您可以尝试将CS​​V读入实际的单个字符串变量并查看消耗的内存量。在这种情况下,它实际上是内存中的单个CSV字符串:

with open('data.csv', 'r') as csvFile:
    data=csvFile.read()