Farmhash와 Cityhash의 파이썬 포장지, 빠른 비 결정 학적 해시 기능 패밀리.
PYPI에서 설치하려면 :
pip install cityhash콘다 환경에 설치하려면 :
conda install -c conda-forge python-cityhash 이 패키지는 cityhash 및 farmhash 네임 스페이스에서 Cityhash 및 Farmhash의 Python API를 각각 노출시킵니다. 각각은 32, 64 및 128 비트 구현을 제공합니다.
Farmhash의 사용 예 :
> >> from farmhash import FarmHash32 , FarmHash64 , FarmHash128
> >> FarmHash32 ( "abc" )
1961358185
> >> FarmHash64 ( "abc" )
2640714258260161385
> >> FarmHash128 ( "abc" )
76434233956484675513733017140465933893지문은 하드웨어 및 플랫폼 독립적 인 것으로 보장되는 씨앗없는 해시입니다. 이는 지속적인 해시 값이 필요한 네트워킹 응용 프로그램에 유용 할 수 있습니다.
> >> from farmhash import Fingerprint128
> >> Fingerprint128 ( "abc" )
76434233956484675513733017140465933893Cityhash와 Farmhash는 증분 해싱을 지원하지 않으므로 캐릭터 스트림의 해싱에 이상적이지 않습니다. 증분 해싱이 필요한 경우 Metrohash 또는 XXHash와 같은 다른 해싱 라이브러리를 고려하십시오.
버퍼 프로토콜을 통해 Python 객체는 메모리의 별도의 위치에 복사 할 필요없이 빠른 액세스를 위해 데이터를 원시 바이트 어레이로 노출시킬 수 있습니다. Numpy는이 프로토콜을 광범위하게 사용하는 잘 알려진 라이브러리 중 하나입니다.
이 패키지의 모든 해싱 기능은 버퍼 프로토콜을 통해 노출되는 객체의 바이트 배열을 읽습니다. 다음은 4 차원 Numpy 어레이의 해싱을 보여주는 예입니다.
> >> import numpy as np
> >> from farmhash import FarmHash64
> >> arr = np . zeros (( 256 , 256 , 4 ))
> >> FarmHash64 ( arr )
1550282412043536862 Numpy 어레이는 작동하려면 인접해야합니다. 비 연속 배열을 변환하려면 Numpy의 ascontiguousarray() 함수를 사용하십시오.
X86-64 플랫폼의 경우이 패키지의 PYPI 저장소에는 SSE4.2 지원으로 컴파일 된 휠이 포함됩니다. Farmhash의 32 및 64 비트 (128 비트는 아님) 변형은 SSE4.2 지침의 혜택을 크게 이용합니다.
Vanilla Cityhash 기능 ( cityhash 모듈 아래)은 SSE4.2를 활용하지 않습니다. 대신,이 패키지와 함께 제공된 cityhashcrc 모듈을 사용할 수 있으며 SSE4.2를 활용하는 128- 및 256 비트 CRC 기능을 노출시킬 수 있습니다. 이러한 기능은 매우 빠르며 FarmHash128 속도로 비 웁니다 (Farmhash에는 256 비트 기능이 포함되어 있지 않음). Farmhash는 Cityhash의 의도 된 후계자이므로 Cityhash-CRC 기능을 사용하기 전에주의를 기울이고 의도 한 응용 프로그램에 충분한 무작위성을 제공하는지 확인할 것입니다.
기여하고자하는 사람들을 위해 Make 명령을 사용하는 빠른 시작이 있습니다.
git clone https://github.com/escherba/python-cityhash.git
cd python-cityhash
make env # create a virtual environment
make test # run Python tests
make cpp-test # run C++ tests
make shell # enter IPython shell어떤 대상을 사용할 수 있는지 알아 보려면 다음을 입력하십시오.
make help패키지 휠은 Cibuildwheel을 사용하여 제작되었으며 GitHub 동작을 사용하여 PYPI에 배포됩니다. 휠에는 컴파일 된 바이너리가 포함되어 있으며 Windows-Amd64, Ubuntu-X86, Linux-X86_64, Linux-Aarch64 및 MacOSX-X86_64와 같은 플랫폼에서 사용할 수 있습니다.
Python 확장으로 사용 가능한 다른 빠른 비 크립권 해시 기능에 대해서는 Metrohash, Murmurhash 및 xxhash를 참조하십시오.
원래 Cityhash 파이썬 바인딩은 Alexander [Amper] Marshalov에 기인합니다. 그들은 Eugene Scherba에 의해 Cython에 다시 작성되었으며, 그는 Farmhash 바인딩을 추가했습니다. Cityhash 및 Farmhash 알고리즘 및 C ++ 구현은 Google의 것입니다.
이 소프트웨어는 MIT 라이센스에 따라 라이센스가 부여됩니다. 자세한 내용은 포함 된 라이센스 파일을 참조하십시오.