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