python - 获取文件的 MD5 哈希值非常慢

标签 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 秒即可完成。但不幸的是,对于我的用户(拥有一台旧电脑)来说,这种方法非常慢,根据我的观察,某些用户可能需要大约 4 分钟才能获取所有文件哈希值。这对他们来说是一个非常烦人的过程,但同时我认为这是最简单和最快的方法 - 我是对的吗?

是否可以以某种方式加速哈希收集过程?

最佳答案

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

关于python - 获取文件的 MD5 哈希值非常慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30180250/

相关文章:

mysql - 我如何调整这个 Mysql 查询来计算给定时间段的消耗?

python - TextCtrl 的 wxPython C++ 部分被删除

python - 在文件末尾添加或删除空字节是否安全?

python - 如何将计算列按多列分组?

python - 如何将 swig/pybind11 C++ 项目放到 pypi 上

algorithm - 指数计算速度

java - 在循环内部或外部声明一个对象?

python - Outlook.OlSaveAsType.olMSG

python - 如何计算两列之间的模糊比?

windows-7 - Pyinstaller,如何在 32 位 linux 上制作 32 位和 64 位 .exe?