获取文件的MD5哈希是非常慢的

时间:2015-05-12 01:27:05

标签: python performance python-2.7 md5 checksum

我使用以下代码为几个文件获取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 个答案:

答案 0 :(得分:3)

我也有一台相当弱的笔记本电脑,我只是尝试过它 - 我也可以在四秒钟内md5一GB。要花几分钟时间,我怀疑它不是计算,而是从硬盘读取文件。尝试读取1 MB块,即f.read(2**20)。这应该需要更少的读取并提高整体阅读速度。