Python sas7bdat module - 迭代器或内存密集型



我想知道 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 如何工作的知识或处理此问题的另一种方法将不胜感激!

您可以在 bitbucket 上查看相关代码。 文档字符串将迭代描述为"生成器",查看代码,它似乎是在读取文件的小块,而不是一次读取整个内容。 但是,我对文件格式的了解还不够多,无法知道是否存在可能导致它一次读取大量数据的情况。

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

最新更新