"我们将2015年Yellow Cab NYC出租车数据作为S3上的12个CSV文件......这些数据在磁盘上约为20GB,在RAM中约为60GB。"
我在尝试dask时遇到了这个观察,这是一个用于处理内存数据集的python框架。
有人可以向我解释为什么会有3倍的差异吗? id想象它与python对象有关但不是100%肯定。
谢谢!
答案 0 :(得分:1)
您正在从磁盘上的CSV读取内存中的结构化数据框对象。这两件事情完全不相似。磁盘上的CSV数据是单个文本字符串。内存中的数据是一个复杂的数据结构,有多种数据类型,内部指针等。
CSV本身没有占用任何RAM。有一个复杂的数据结构占用RAM,它使用来自磁盘上的CSV的数据填充。这根本不是一回事。
为了说明差异,您可以尝试将CSV读入实际的单个字符串变量并查看消耗的内存量。在这种情况下,它实际上是内存中的单个CSV字符串:
with open('data.csv', 'r') as csvFile:
data=csvFile.read()