我正在尝试为Stata文件类型优化二进制阅读器,并且对文件中的每个记录进行了懒惰的评估。随着文件大小的增加,读者会很快失去速度。
当我问起最初写它的人为什么使用发电机时,他说这是记忆小心的。我给出的建议是一次读取并处理更大的文件块,我想知道如何在不进入虚拟内存的情况下告诉我可以读取的最大块是什么。
一些附注
答案 0 :(得分:1)
我不确定“没有进入虚拟内存”是什么意思,但这高度依赖于文件格式,存储介质和文件系统/操作系统等细节。这是经验最好的决定。如果可以,请实现一个参数chunk_size
(或n_records
或其他),以确定一次要读取的记录数。
取决于正在阅读的代码。这可能是由于系统调用开销,或者因为Python代码必须在读取之间执行。
我在Cython中共同编写了一个loader for the LibSVM/SVMlight file format,一种简单的稀疏矩阵文本格式。它是作为scikit-learn的一部分发布的。