Python sas7bdat模块 - 迭代器还是内存密集型?

时间:2016-01-20 19:21:05

标签: python sas

我想知道Python中的sas7bdat模块是创建迭代器类型对象还是将整个文件作为列表加载到内存中?我有兴趣逐行处理大小为750GB的.sas7bdat文件,我真的不希望Python试图加载整个进入RAM的事情。

示例脚本:

from sas7bdat import SAS7BDAT
count = 0
with SAS7BDAT('big_sas_file.sas7bdat') as f:
 for row in f:
  count+=1

我也可以使用

it = f.__iter__()

但我不确定这是否仍会经历内存密集型数据加载。任何关于sas7bdat如何工作的知识或处理这个问题的另一种方式将不胜感激!

1 个答案:

答案 0 :(得分:2)

您可以在bitbucket上看到相关代码。 docstring将迭代描述为"生成器",并且查看代码,它似乎是读取文件的小块而不是一次读取整个文件。但是,我对文件格式知之甚少,不知道是否有可能导致它同时读取大量数据的情况。

如果你真的想在尝试使用巨大的750G文件之前了解它的性能,你应该通过创建一些增加大小的示例文件来测试它,看看它的性能如何随文件大小而变化。