You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用xxhash哈希大文件时如何避免内存耗尽?

处理大文件XXHash计算的内存问题

原代码的问题在于input_file.read()会一次性将整个文件加载到内存中,当文件体积超过系统可用内存时,就会触发内存耗尽、交换空间占满,最终被系统终止进程的问题。

正确的处理方式是分块读取文件,逐步更新哈希值,不需要一次性加载整个文件到内存:

import xxhash

def get_hash(file, block_size=65536):
    # 初始化XXH3-64哈希对象
    hash_obj = xxhash.xxh3_64()
    with open(file, 'rb') as input_file:
        # 循环分块读取文件
        while chunk := input_file.read(block_size):
            # 用当前块更新哈希
            hash_obj.update(chunk)
    # 返回十六进制格式的哈希结果
    return hash_obj.hexdigest()

说明:

  • block_size参数可以根据实际情况调整,默认的65536字节(64KB)是兼顾内存占用和计算效率的通用值,也可以设置为1048576(1MB)之类的更大值。
  • 每次读取一块后立即更新哈希,处理完所有块后再生成最终摘要,全程只占用少量内存存储当前块和哈希对象。

内容的提问来源于stack exchange,提问作者equinoxe5

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.28 14:08:12