Comments 9
Оценка качества статьи в тематическом блоге: <рейтинг статьи>/(<количество комментариев>+50)
Спасибо огромное за обертку! Глянул исходники CityHash, после комментария
Спасибо огромное за обертку! Глянул исходники CityHash, после комментария
// Murmur-inspired hashing.
начинается магия =)А! Понял чего не хватает! Добавьте хотябы простенький readme и в него минимальный кусок кода как этим пользоваться в Python типа
Можно ли им хешировать произвольные потоки данных (файлы скажем). В каком виде получается хеш (hex строка или набор бит)
import cityhash
hash=cityhash.CityHash64("hello world!")
Можно ли им хешировать произвольные потоки данных (файлы скажем). В каком виде получается хеш (hex строка или набор бит)
Ок, кое что сам попробовал
Как работает CityHashWithSeed не понял.
Хешировать потоково (например открытый файл
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)
Как работает CityHashWithSeed не понял.
Хешировать потоково (например открытый файл
f=open("fname", "r")
) пока не понял как.Промахнулся… habrahabr.ru/blogs/python/117395/#comment_3821797
Хешировать потоково (например открытый файл f=open(«fname», «r»)) пока не понял как.
Хешировать можно только строки ) Например, содержимое файла.
Как работает CityHashWithSeed не понял.
For convenience, a 64-bit seed is also hashed into the result.
Это хэш с начальным значением, то есть вторым параметром ему передается предыдущий хеш.
А! Понял чего не хватает! Добавьте хотябы простенький readme и в него минимальный кусок кода как этим пользоваться в Python типа
Спасибо, чуть позже обязательно добавлю README.
Т.е. для хеширования файла потоково нужно написать что-то в стиле, грубо говоря
Если да, то есть смысл написать обертку в стиле hashlib (с методом update)
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())
Если да, то есть смысл написать обертку в стиле hashlib (с методом update)
Эта программа падает кстати, говорит
/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)
Отличная идея, только вот думаю, подождать пока Google включат в CityHash что-то подобное или написать самому.
Sign up to leave a comment.
CityHash для Python