Skip to main content

A collection of useful extensions for python implement in C.

Project description

Python:

>= 3.4

Version:
0.0.4

Installation

Install and update using pip (python3 only):

pip install -U ctools

API

jump_consistent_hash(key: int, num_buckets: int) -> int:
    """Generate a number in the range [0, num_buckets).

    This function uses C bindings for speed.

    :param key: The key to hash.
    :type key: int
    :param num_buckets: Number of buckets to use.
    :type num_buckets: int
    :return: hash number
    :rtype: int
    """
  • A normal hash function for str with consistent value.

strhash(s: str) -> int:
    """
    hash str with consistent value.

    This function uses C bindings for speed.

    :param s: The string to hash.
    :type s: string
    :return: hash number
    :rtype: int
    """
  • Transfer integer like 20170101 (Java style) to python datetime object.

int8_to_datetime(date_integer: int) -> datetime.datetime:
    """
    Convert int like 20180101 to datetime.datetime(2018, 1, 1)).

    This function uses C bindings for speed.

    :param date_integer: The string to hash.
    :type date_integer: int
    :return: parsed datetime
    :rtype: datetime.datetime
    """

Benchmark

$ make install && make benchmark
  int8_to_datetime,       63.481 ns ± 4.179 nseach (10 runs, 1,000,000 loops)
  jump_consistent_hash,   156.082 ns ± 6.489 nseach (10 runs, 1,000,000 loops)
  strhash,                139.542 ns ± 4.268 nseach (10 runs, 1,000,000 loops)

How To Test

$ make install && make test

More

$ make help

What’s important is free.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

ctools-0.0.4.tar.gz (8.8 kB view hashes)

Uploaded Source

Built Distributions

ctools-0.0.4-cp37-cp37m-win_amd64.whl (12.9 kB view hashes)

Uploaded CPython 3.7m Windows x86-64

ctools-0.0.4-cp36-cp36m-win_amd64.whl (12.9 kB view hashes)

Uploaded CPython 3.6m Windows x86-64

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page