【问题标题】:How did Python read this binary faster the second time?Python 第二次如何更快地读取这个二进制文件?
【发布时间】:2020-06-03 17:29:02
【问题描述】:

我正在探索读取格式化二进制文件的方法,并从基础开始:

>>> with open(fp, 'rb') as f:
        buffer = f.read()

我的文件是 1.02GB,第一次读取并存储在内存中大约需要 90 秒。偶然我不小心告诉解释器再次读取文件(按 Enter 键太多次),它在 0.5 秒内读取它。该文件在无意中重新读取之前已关闭。

这是怎么回事?

【问题讨论】:

    标签: python io python-internals


    【解决方案1】:

    您的文件第二次被缓存在内存中。这与 Python 无关。

    【讨论】:

      【解决方案2】:

      文件数据很可能已被缓存并仍在内存中。大多数操作系统会将数据留在内存中一段时间​​,以防再次被要求。

      【讨论】:

      • 我也没有意识到这一点,因为我也转储了内容,很有趣。
      • 我认为从 Python 的角度来看,数据已经消失了,但操作系统会保留它以防万一。如果操作系统用完了内存中的可用空间,并且您已经有 1 小时没有运行您的程序,那么它可能会决定真正删除您的数据。
      • 有道理。几分钟前我重复了这个过程,但花了前一次。
      • 研究“垃圾收集器”,它会告诉你更多。可能在早期的语言/系统中,如果程序说要删除数据,它会立即发生。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-05-01
      • 2013-03-17
      • 1970-01-01
      • 1970-01-01
      • 2012-02-01
      相关资源
      最近更新 更多