Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
// Murmur-inspired hashing.начинается магия =)import cityhash
hash=cityhash.CityHash64("hello world!")sudo aptitude install cython
git clone https://github.com/Amper/cityhash.git
cd cityhash/
chmod +x install.sh
sudo ./install.sh
ipython
In [1]: import cityhash
In [2]: cityhash.CityHash64("hello world!")
Out[2]: 9835112831561035123L
In [3]: cityhash.CityHash128("hello world!")
Out[3]: (9012332723877280322L, 15609784913653702318L)f=open("fname", "r")) пока не понял как.Хешировать потоково (например открытый файл f=open(«fname», «r»)) пока не понял как.
Как работает CityHashWithSeed не понял.
For convenience, a 64-bit seed is also hashed into the result.
А! Понял чего не хватает! Добавьте хотябы простенький readme и в него минимальный кусок кода как этим пользоваться в Python типа
import cityhash
with open("filename", "r") as f:
chunk=f.read(5120)
hash=cityhash.CityHash64(chunk)
chunk=f.read(5120)
while chunk:
hash=cityhash.CityHash64WithSeed(chunk, hash)
chunk=f.read(5120)
assert hash==cityhash.CityHash64(open("filename", "r").read())/usr/local/lib/python2.6/dist-packages/cityhash.so in cityhash.CityHash64WithSeed (cityhash.cpp:719)() OverflowError: long int too large to convert to int
Т.е. для хеширования файла потоково нужно написать что-то в стиле, грубо говоря
Если да, то есть смысл написать обертку в стиле hashlib (с методом update)
CityHash для Python