mmh3 是一个用于计算 MurmurHash 哈希值的 Python 库。MurmurHash 是一种非加密型哈希函数,适用于一般的哈希检索操作,具有快速计算和低碰撞率的特点,在数据存储、数据查找、分布式系统等领域有着广泛的应用。

安装

你可以使用 pip 来安装 mmh3 库:

pip install mmh3

基本使用

以下是 mmh3 库的一些常见用法示例:

计算 32 位哈希值

import mmh3

# 计算字符串的 32 位哈希值
hash_value_32 = mmh3.hash('Hello, World!')
print(f"32 位哈希值: {hash_value_32}")
在上述代码中,mmh3.hash() 函数用于计算输入字符串的 32 位 MurmurHash 值。

计算 128 位哈希值

import mmh3

# 计算字符串的 128 位哈希值(在 64 位系统上)
hash_value_128 = mmh3.hash128('Hello, World!')
print(f"128 位哈希值: {hash_value_128}")
mmh3.hash128() 函数用于计算输入字符串的 128 位 MurmurHash 值。

使用自定义种子

import mmh3

# 计算带有自定义种子的 32 位哈希值
seed = 42
hash_value_with_seed = mmh3.hash('Hello, World!', seed=seed)
print(f"带有种子 {seed} 的 32 位哈希值: {hash_value_with_seed}")
通过 seed 参数,你可以为哈希计算指定一个自定义的种子值。相同的输入在不同的种子下会产生不同的哈希结果。

对字节数据进行哈希计算

import mmh3

# 对字节数据进行 32 位哈希计算
byte_data = b'Hello, World!'
hash_value_bytes = mmh3.hash(byte_data)
print(f"字节数据的 32 位哈希值: {hash_value_bytes}")
mmh3 库也可以直接对字节数据进行哈希计算。

应用场景

  • 布隆过滤器:MurmurHash 可以快速生成多个哈希值,用于布隆过滤器的数据插入和查询操作。

  • 数据分片:在分布式系统中,可以使用 MurmurHash 对数据进行分片,将数据均匀地分配到不同的节点上。

  • 缓存系统:可以使用 MurmurHash 生成缓存键,以快速查找和存储数据。

总之,mmh3 库是一个简单易用且高效的哈希计算工具,适合处理大规模数据的哈希需求。