获取文件的 MD5 哈希非常慢
Getting MD5 hash of the files is terribly slow
我正在使用以下代码获取多个文件的 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 分钟才能获得所有文件哈希值。这对他们来说是一个非常烦人的过程,但同时我认为这是最简单和最快的方法——我说得对吗?
是否有可能以某种方式加快哈希收集过程?
我也有一台相当弱的笔记本电脑,我刚刚试过了 - 我也可以 md5
在四秒内达到 1 GB。去几分钟,我怀疑这不是计算而是从硬盘读取文件。尝试读取 1 MB 的块,即 f.read(2**20)
。那应该需要更少的读取并提高整体读取速度。
我正在使用以下代码获取多个文件的 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 分钟才能获得所有文件哈希值。这对他们来说是一个非常烦人的过程,但同时我认为这是最简单和最快的方法——我说得对吗?
是否有可能以某种方式加快哈希收集过程?
我也有一台相当弱的笔记本电脑,我刚刚试过了 - 我也可以 md5
在四秒内达到 1 GB。去几分钟,我怀疑这不是计算而是从硬盘读取文件。尝试读取 1 MB 的块,即 f.read(2**20)
。那应该需要更少的读取并提高整体读取速度。