Python ライブラリ Murmurのドキュメントは少しまばらです。
私はこの答えからコードを適応させようとしています:
import hashlib
from functools import partial
def md5sum(filename):
with open(filename, mode='rb') as f:
d = hashlib.md5()
for buf in iter(partial(f.read, 128), b''):
d.update(buf)
return d.hexdigest()
print(md5sum('utils.py'))
回答で読んだことから、md5はファイル全体を一度に操作できないため、このループが必要です。ただし、ライン上で何が起こるかは正確にはわかりませんd.update(buf)
。
のパブリック メソッドは次のhashlib.md5()
とおりです。
'block_size',
'copy',
'digest',
'digest_size',
'hexdigest',
'name',
'update'
一方mmh3
、
'hash',
'hash64',
'hash_bytes'
いいえupdate
またはhexdigest
方法..
同様の結果を達成する方法を知っている人はいますか?
動機はできるだけ早く一意性をテストすることです。ここでの結果はつぶやきが良い候補であることを示唆しています。
アップデート -
@Bakuriu からのコメントに続いて、より適切に文書化されていると思われるmmh3を見ました。
内部のパブリック メソッドは次のとおりです。
import mmh3
print([x for x in dir(mmh3) if x[0]!='_'])
>>> ['hash', 'hash128', 'hash64', 'hash_bytes', 'hash_from_buffer']
..したがって、「更新」メソッドはありません。のソースコードを見てみましたmmh3.hash_from_buffer
が、ループが含まれているようには見えず、Python にも含まれていないため、実際には追跡できません。ラインへのリンクはこちら
そのため、今のところ、この目的にはほぼ同じであると考えられる CRC-32 を使用します。誰かが解決策を投稿した場合、それをテストします。