Python如何比我的硬盘更快地读取文件?

2 投票
2 回答
529 浏览
提问于 2025-04-18 10:07

为什么Python能以超过我硬盘理论最大速度的速度读取文件(我用的是配备SSD的Mac Mini)?这个bigfile是一个3.22 GB的完全随机数据文件,而根据QuickBench的测试,我的硬盘读取速度不到500 MB/s。

t0 = time.perf_counter()
f = open('/Volumes/V/bigfile', 'rb')
checksum = 1
bites = f.read(1048576)
while bites:
    checksum = zlib.adler32(bites, checksum)
    bites = f.read(1048576)

print('Checksum: %s, Time taken: %s' % (checksum, time.perf_counter() - t0))

输出结果是:校验和:520807048,耗时:0.8804108270001052

这根本不可能啊!我漏掉了什么吗?

2 个回答

2

有几种情况可能导致这种情况发生:

  • 文件已经在文件系统的缓存中,所以你直接从内存中获取它。
  • 文件被文件系统压缩了,因此你只需要传输更少的数据(实际上,从10.6版本开始,HFS+就这样做了,详细信息可以查看这个链接,里面有一些脚本可以帮助你检查情况和解释)。
  • 你在虚拟机内进行测量,而你的计时器可能测量的是错误的内容,VMWare甚至有一篇关于这种错误的详细文档(例如,这个链接,其他虚拟机系统也类似)。
5

这个文件在你电脑的磁盘缓存里,缓存是存放在内存里的。内存的速度很快。

撰写回答