【问题标题】:Fast iterative file reading in python在 python 中快速迭代文件读取
【发布时间】:2021-02-20 01:20:37
【问题描述】:

我问了一个问题here,关于如何将一个非常大的文件读入python,我得到了一个基于zip_longest的回复。

问题是这个解决方案非常慢 - keras 的 model.predict 需要 >2 小时来处理文件中的 200,000 行,当文件直接加载到内存中时通常需要

后来我在 pandas 中找到了分块功能,但我不明白如何加载文件块,重塑数据然后使用这些方法使用它,我也不知道这是否会读取和使用超大文件中数据的最快方式。

欢迎任何对此问题的快速解决方案。

【问题讨论】:

    标签: python pandas dataframe memory chunking


    【解决方案1】:

    如果您正在寻找快速执行的迭代 python 函数,您应该查看 itertools 包 + 文档。我很确定它不会比这更快。

    但请注意,如果您忽略任何类型的预处理或整形,您将在处理大型数据集时达到最大性能。想象一下你的 2e5 行文件只包含一个字符(1 个字节)的信息。这仍然需要读取 200 MB 的信息,如果我理解正确的话,这是你可以想象的下限。因此,如果您一次性获得 3 或 4 GB 的信息,您将不得不面对较长的口译时间。

    【讨论】:

    • zip_longest 来自 iterools 包。
    • 可能有一种方法可以重组数据以加快处理速度,但我不知道那是什么。我使用 c++ ROOT 生成数据,每行包含一个浮点数。批量打开文件难免总是比加载整个文件到内存慢吗?
    • 当然,如果我将文件大小增加 5 倍,我可以合理预期的最坏情况是慢 5 倍,而不是 500 倍,这是目前的情况?我的意思是,如果我打开和关闭 5 个文件,每个文件 200,000 行,那么我不会期望该过程比打开和关闭一个 200,000 行文件花费的时间长 500 倍
    猜你喜欢
    • 2014-06-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多