gpt4 book ai didi

Python MD5 哈希计算更快

转载 作者:行者123 更新时间:2023-11-28 20:11:37 25 4
gpt4 key购买 nike

我会尽力解释我的问题以及我认为我可以如何解决它的思路。

我用这个代码

    for root, dirs, files in os.walk(downloaddir):
for infile in files:
f = open(os.path.join(root,infile),'rb')
filehash = hashlib.md5()
while True:
data = f.read(10240)
if len(data) == 0:
break
filehash.update(data)
print "FILENAME: " , infile
print "FILE HASH: " , filehash.hexdigest()

并使用 start = time.time() elapsed = time.time() - start 我测量计算哈希值需要多长时间。将我的代码指向一个 653megs 的文件,结果如下:

root@Mars:/home/tiago# python algorithm-timer.py 
FILENAME: freebsd.iso
FILE HASH: ace0afedfa7c6e0ad12c77b6652b02ab
12.624
root@Mars:/home/tiago# python algorithm-timer.py
FILENAME: freebsd.iso
FILE HASH: ace0afedfa7c6e0ad12c77b6652b02ab
12.373
root@Mars:/home/tiago# python algorithm-timer.py
FILENAME: freebsd.iso
FILE HASH: ace0afedfa7c6e0ad12c77b6652b02ab
12.540

好的,现在 12 秒 +- 在一个 653mb 的文件上,我的问题是我打算在一个将运行多个文件的程序上使用这段代码,其中一些可能是 4/5/6Gb,并且需要更长的时间才能计算。我想知道是否有更快的方法来计算文件的哈希值?也许通过做一些多线程?我使用另一个脚本逐秒检查 CPU 的使用情况,我发现我的代码只使用了我的 2 个 CPU 中的 1 个,并且最多只使用了 25%,我可以通过任何方式改变它吗?

提前感谢大家提供的帮助。

最佳答案

在您的情况下,哈希计算几乎肯定会受到 I/O 限制(除非您将在处理器非常慢的机器上运行它),因此多线程或同时处理多个文件可能不会产生您预期的结果结果。

将文件分布在多个驱动器或更快的 (SSD) 驱动器上可能会有所帮助,即使这可能不是您正在寻找的解决方案。

关于Python MD5 哈希计算更快,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2813635/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com