【发布时间】:2015-05-12 01:27:04
【问题描述】:
我正在使用以下代码来获取多个文件的 MD5 哈希值,其中的值约为。总大小为 1GB:
md5 = hashlib.md5()
with open(filename,'rb') as f:
for chunk in iter(lambda: f.read(128*md5.block_size), b''):
md5.update(chunk)
fileHash = md5.hexdigest()
对我来说,它的速度非常快,大约需要 3 秒才能完成。但不幸的是,对于我的用户(拥有旧 PC)来说,这种方法非常慢,根据我的观察,某些用户可能需要大约 4 分钟才能获取所有文件哈希。这对他们来说是一个非常烦人的过程,但同时我认为这是最简单、最快的方法——我说的对吗?
是否有可能以某种方式加速哈希收集过程?
【问题讨论】:
-
你试过使用更大的块吗?像 1 MB?可能对旧硬盘有益。您是否有 SSD(或足够的 RAM,可以将数据缓存在其中)?
-
@StefanPochmann 不,我没有,因为更大的块会导致更多的 RAM 使用。我个人有一个 SSD 磁盘,这就是为什么这种方法对我来说很好,但我不能对其他拥有 1GB RAM PC 和旧的慢速磁盘的用户说同样的话。
-
1 MB 不算什么。去做吧。
-
@StefanPochmann 我会试试的,谢谢。 :-)
-
好 :-) 那就告诉我吧。我也有一个 SSD,所以我无法实际测试它,我很好奇它是否/多快。
标签: python performance python-2.7 md5 checksum