我正在使用以下代码来获取多个文件的 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 秒即可完成。但不幸的是,对于我的用户(拥有一台旧电脑)来说,这种方法非常慢,根据我的观察,某些用户可能需要大约 4 分钟才能获取所有文件哈希值。这对他们来说是一个非常烦人的过程,但同时我认为这是最简单和最快的方法 - 我是对的吗?
是否可以以某种方式加速哈希收集过程?
最佳答案
我也有一台相当弱的笔记本电脑,我刚刚尝试过 - 我也可以在四秒内 md5
1 GB。到了几分钟,我怀疑不是计算而是从硬盘读取文件。尝试读取 1 MB block ,即 f.read(2**20)
。这应该需要更少的读取并提高整体读取速度。
关于python - 获取文件的 MD5 哈希值非常慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30180250/