如何在hashlib.file_digest中使用xxhash计算大文件哈希?
用xxhash快速计算大文件哈希的可行实现
hashlib模块并没有内置xxhash算法,所以你直接调用file_digest(f, 'xxhash')肯定会报错。要使用xxhash,得先安装第三方的xxhash库:
pip install xxhash
下面是针对大文件的xxhash计算实现,和你原来的sha256逻辑一致,采用分块读取避免内存占用过高:
import xxhash def xxhashsum(filename, algorithm='xxh64'): # 可选算法:xxh3、xxh64、xxh32,其中xxh3速度最快 hash_obj = getattr(xxhash, algorithm)() with open(filename, 'rb', buffering=0) as f: while chunk := f.read(65536): # 64KB分块读取,可根据内存调整 hash_obj.update(chunk) return hash_obj.hexdigest()
使用示例:
# 计算xxh3哈希(速度最快) print(xxhashsum('large_file.bin', 'xxh3')) # 计算xxh64哈希 print(xxhashsum('large_file.bin'))
如果追求极致速度,优先选xxh3算法,它在大文件场景下的性能比xxh64还要高出不少,完全能满足快速文件对比的需求。
内容的提问来源于stack exchange,提问作者YGA
相关产品推荐
相关产品推荐

