我想知道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如何工作的知识或处理这个问题的另一种方式将不胜感激!
答案 0 :(得分:2)
您可以在bitbucket上看到相关代码。 docstring将迭代描述为"生成器",并且查看代码,它似乎是读取文件的小块而不是一次读取整个文件。但是,我对文件格式知之甚少,不知道是否有可能导致它同时读取大量数据的情况。
如果你真的想在尝试使用巨大的750G文件之前了解它的性能,你应该通过创建一些增加大小的示例文件来测试它,看看它的性能如何随文件大小而变化。