gpt4 book ai didi

python - Hashlib Python 模块方法更新中的最大字节数限制

转载 作者:太空宇宙 更新时间:2023-11-03 14:34:09 24 4
gpt4 key购买 nike

我正在尝试使用 hashlib 模块中的函数 hashlib.md5() 计算文件的 md5 哈希值。

所以我写了这段代码:

Buffer = 128
f = open("c:\\file.tct", "rb")
m = hashlib.md5()

while True:
p = f.read(Buffer)
if len(p) != 0:
m.update(p)
else:
break
print m.hexdigest()
f.close()

我注意到如果我将 Buffer 变量值增加 64、128、256 等,函数更新会更快。有不能超过的上限吗?我想这可能只是 RAM 内存问题,但我不知道。

最佳答案

大 (≈2**40) block 大小会导致 MemoryError 即,除了可用 RAM 之外没有其他限制。另一方面,bufsize 在我的机器上受到 2**31-1 的限制:

import hashlib
from functools import partial

def md5(filename, chunksize=2**15, bufsize=-1):
m = hashlib.md5()
with open(filename, 'rb', bufsize) as f:
for chunk in iter(partial(f.read, chunksize), b''):
m.update(chunk)
return m

chunksize 可以和非常小的一样慢。测量它。

我发现对于≈10MB 的文件,2**15 chunksize 是我测试过的文件中最快的。

关于python - Hashlib Python 模块方法更新中的最大字节数限制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4949162/

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