SIZE = 1<<16
def justread(file):
with open(file, 'rb') as f:
while f.read(SIZE):
pass
我第一次在700MB文件上运行此功能需要19秒。 当我重复时 读取同一个文件的时间减少到0.5秒 我用很多文件重复了这个,结果很相似 这是怎么回事?
答案 0 :(得分:13)
操作系统caches第一次读取时内存中的文件,第二次从内存而不是从硬盘读取。当然记忆要快得多。
答案 1 :(得分:4)
您的操作系统正在缓存该文件。
什么?这意味着,第一次阅读文件时,您的程序必须查找硬盘驱动器中的信息,硬盘驱动器是懒散的。
现在,在第一次读完整个文件之后,为了以防万一,Linux将其保存在内存中,可能因为当时没有什么重要的。因此,第二次阅读时,您正在访问内存中的副本,而无法访问硬盘驱动器,速度提高了几个数量级。
干杯!