我使用以下代码为几个文件获取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分钟来获取所有文件哈希值。这对他们来说是一个非常烦人的过程,但同时我认为这是最简单的&最快的方式 - 我是对的?
是否有可能以某种方式加速哈希收集过程?
答案 0 :(得分:3)
我也有一台相当弱的笔记本电脑,我只是尝试过它 - 我也可以在四秒钟内md5
一GB。要花几分钟时间,我怀疑它不是计算,而是从硬盘读取文件。尝试读取1 MB块,即f.read(2**20)
。这应该需要更少的读取并提高整体阅读速度。