Skip to main content

Hyper-fast queue for Python

Project description

HyperQ

Python 3.10+ License: MIT PyPI version

⚠️ Warning: This package is not ready for production usage yet. It's currently in active development and may have bugs, especially with multiprocessing scenarios using the spawn start method in macOS.

Hyper-fast queue for Python - A high-performance queue implementation using Cython and C++ for inter-process communication.

🚀 Features

  • Lightning Fast: Optimized C++ implementation with Python bindings
  • Inter-Process Communication: Shared memory-based queues for high-performance IPC
  • Ring Buffer Architecture: Uses a ring buffer with double virtual memory mapping to the same physical memory.
  • Two Queue Types:
    • HyperQ: General-purpose queue for Python objects
    • BytesHyperQ: Specialized queue for bytes data (even faster)
  • Thread-Safe: Safe for concurrent access
  • Unix-like Systems: Works on Linux and macOS (POSIX-compliant systems)
  • Python 3.10+: Modern Python support

📋 TODO

  • Fix multiprocessing spawn start method bug in macOS - Critical issue with multiple consumers/producers
    • Queue doesn't work properly when multiprocessing.set_start_method('spawn') is used
    • Affects scenarios with multiple consumers and producers
  • Add __getstate__ and __setstate__ methods to make queue objects picklable
    • Allow passing queue objects directly to multiprocessing functions
    • Serialize only the shared memory name/descriptor, not the entire queue state
    • Enable seamless integration with multiprocessing.Pool and other parallel processing tools
  • Add timeout support for put() and get() operations
  • Add non-blocking operations (put_nowait(), get_nowait())
    • put_nowait(): Non-blocking put that raises queue.Full if queue is full
    • get_nowait(): Non-blocking get that raises queue.Empty if queue is empty
    • Useful for polling scenarios where you don't want to block the thread
  • Add batch operations for better performance
    • put_many(items): Put multiple items in a single operation
    • get_many(count): Get multiple items in a single operation
    • get_all(): Get all available items at once
    • Reduces synchronization overhead for bulk operations
  • Design decision: Queue name management
    • Option A: Encapsulate queue names (auto-generate, hide from client)
    • Option B: Client specifies queue names (current approach)
    • Option C: Hybrid approach (auto-generate with optional override)
  • Add Windows support (requires different shared memory implementation)
  • Add more comprehensive tests including stress tests and edge cases
  • Add documentation for advanced usage patterns
    • orjson + BytesHyperQ for JSON: Use orjson.dumps() + BytesHyperQ for fastest JSON serialization and transfer.

⚠️ Platform Support

Currently supported:

  • ✅ Linux
  • ⚠️ macOS (There is an issue when start method is set to spawn and there are multiple producers/consumers)

Not supported:

  • ❌ Windows (uses POSIX-specific APIs)
  • ❌ PyPy

🔧 Technical Details

Ring Buffer Implementation

HyperQ uses a ring buffer with double virtual memory mapping to the same physical memory. This eliminates the need for 2 memcpy operations when data wraps around the buffer boundaries.

Shared Memory Architecture

  • Header segment: Contains queue metadata, synchronization primitives, and buffer information
  • Buffer segment: The actual data storage with double virtual memory mapping
  • POSIX shared memory: Uses shm_open() and mmap() for cross-process memory sharing
  • Synchronization: Uses POSIX mutexes and condition variables for thread/process safety

📦 Installation

From PyPI

pip install hyperq

From Source

git clone https://github.com/martinmkhitaryan/hyperq.git
cd hyperq
pip install -e .

Development Installation

git clone https://github.com/martinmkhitaryan/hyperq.git
cd hyperq
pip install -e ".[test]"

🎯 Quick Start

Basic Usage

import multiprocessing as mp
from hyperq import HyperQ, BytesHyperQ

# Create a queue with 1MB capacity
queue = HyperQ(1024 * 1024, name="my_queue")

# Put data
queue.put("Hello, World!")
queue.put(42)
queue.put({"key": "value"})

# Get data
data = queue.get()  # "Hello, World!"
number = queue.get()  # 42
obj = queue.get()  # {"key": "value"}

Inter-Process Communication

import multiprocessing as mp
from hyperq import HyperQ

def producer(queue_name):
    queue = HyperQ(queue_name)
    for i in range(1000):
        queue.put(f"Message {i}")

def consumer(queue_name):
    queue = HyperQ(queue_name)
    for _ in range(1000):
        message = queue.get()
        print(f"Received: {message}")

if __name__ == "__main__":
    # Create queue in main process
    queue = HyperQ(1024 * 1024, name="shared_queue")
    queue_name = queue.shm_name

    # Start producer and consumer processes
    p1 = mp.Process(target=producer, args=(queue_name,))
    p2 = mp.Process(target=consumer, args=(queue_name,))

    p1.start()
    p2.start()
    p1.join()
    p2.join()

Bytes-Specific Queue (Faster)

from hyperq import BytesHyperQ

# For bytes data, use BytesHyperQ for better performance
queue = BytesHyperQ(1024 * 1024, name="bytes_queue")

# Put bytes data
queue.put(b"Hello, World!")
queue.put(b"Binary data")

# Get bytes data
data = queue.get()  # b"Hello, World!"

📊 Performance Benchmarks

HyperQ is designed for high-performance scenarios. Here are some benchmark results:

Hardware:

  • CPU: Intel® Core™ i3-12100
  • Memory: 8GB
  • OS: Ubuntu 22.04 / Virtual Box
  • Python: 3.12

Benchmark bytes transfering.

Running bytes performance benchmarks...
================================================================================

Results for 100,000 messages of 32 bytes per producer:
Total messages: 100,000 (1 producers, 1 consumers)
--------------------------------------------------------------------------------
Queue Type           Total Time (s)  Latency (ms)    Throughput (items/s)
--------------------------------------------------------------------------------
BytesHyperQ          0.018           0.000           5,528,243           
HyperQ               0.090           0.001           1,106,593           
multiprocessing.Queue 0.334           0.003           299,499             
faster-fifo          0.406           0.004           246,330             

🏆 Fastest: BytesHyperQ with 5,528,243 items/s
   5.0x faster than HyperQ
   18.5x faster than multiprocessing.Queue
   22.4x faster than faster-fifo

================================================================================
Sleeping 2 seconds before next test configuration...

Results for 100,000 messages of 64 bytes per producer:
Total messages: 100,000 (1 producers, 1 consumers)
--------------------------------------------------------------------------------
Queue Type           Total Time (s)  Latency (ms)    Throughput (items/s)
--------------------------------------------------------------------------------
BytesHyperQ          0.020           0.000           5,067,022           
HyperQ               0.090           0.001           1,105,261           
multiprocessing.Queue 0.388           0.004           257,635             
faster-fifo          0.397           0.004           251,805             

🏆 Fastest: BytesHyperQ with 5,067,022 items/s
   4.6x faster than HyperQ
   19.7x faster than multiprocessing.Queue
   20.1x faster than faster-fifo

================================================================================
Sleeping 2 seconds before next test configuration...

Results for 100,000 messages of 128 bytes per producer:
Total messages: 100,000 (1 producers, 1 consumers)
--------------------------------------------------------------------------------
Queue Type           Total Time (s)  Latency (ms)    Throughput (items/s)
--------------------------------------------------------------------------------
BytesHyperQ          0.025           0.000           3,988,545           
HyperQ               0.102           0.001           984,694             
multiprocessing.Queue 0.332           0.003           301,471             
faster-fifo          0.402           0.004           248,764             

🏆 Fastest: BytesHyperQ with 3,988,545 items/s
   4.1x faster than HyperQ
   13.2x faster than multiprocessing.Queue
   16.0x faster than faster-fifo

================================================================================
Sleeping 2 seconds before next test configuration...

Results for 100,000 messages of 256 bytes per producer:
Total messages: 100,000 (1 producers, 1 consumers)
--------------------------------------------------------------------------------
Queue Type           Total Time (s)  Latency (ms)    Throughput (items/s)
--------------------------------------------------------------------------------
BytesHyperQ          0.030           0.000           3,280,452           
HyperQ               0.098           0.001           1,024,640           
multiprocessing.Queue 0.344           0.003           290,311             
faster-fifo          0.395           0.004           253,071             

🏆 Fastest: BytesHyperQ with 3,280,452 items/s
   3.2x faster than HyperQ
   11.3x faster than multiprocessing.Queue
   13.0x faster than faster-fifo

================================================================================
Sleeping 2 seconds before next test configuration...

Results for 100,000 messages of 512 bytes per producer:
Total messages: 100,000 (1 producers, 1 consumers)
--------------------------------------------------------------------------------
Queue Type           Total Time (s)  Latency (ms)    Throughput (items/s)
--------------------------------------------------------------------------------
BytesHyperQ          0.028           0.000           3,550,212           
HyperQ               0.105           0.001           956,745             
multiprocessing.Queue 0.357           0.004           279,993             
faster-fifo          0.420           0.004           238,251             

🏆 Fastest: BytesHyperQ with 3,550,212 items/s
   3.7x faster than HyperQ
   12.7x faster than multiprocessing.Queue
   14.9x faster than faster-fifo

================================================================================
Sleeping 2 seconds before next test configuration...

Results for 100,000 messages of 1024 bytes per producer:
Total messages: 100,000 (1 producers, 1 consumers)
--------------------------------------------------------------------------------
Queue Type           Total Time (s)  Latency (ms)    Throughput (items/s)
--------------------------------------------------------------------------------
BytesHyperQ          0.042           0.000           2,390,645           
HyperQ               0.109           0.001           917,085             
multiprocessing.Queue 0.379           0.004           263,922             
faster-fifo          0.413           0.004           241,983             

🏆 Fastest: BytesHyperQ with 2,390,645 items/s
   2.6x faster than HyperQ
   9.1x faster than multiprocessing.Queue
   9.9x faster than faster-fifo

================================================================================
Sleeping 2 seconds before next test configuration...

Results for 100,000 messages of 4096 bytes per producer:
Total messages: 100,000 (1 producers, 1 consumers)
--------------------------------------------------------------------------------
Queue Type           Total Time (s)  Latency (ms)    Throughput (items/s)
--------------------------------------------------------------------------------
BytesHyperQ          0.077           0.001           1,296,410           
HyperQ               0.153           0.002           653,955             
multiprocessing.Queue 0.420           0.004           238,116             
faster-fifo          0.437           0.004           228,823             

🏆 Fastest: BytesHyperQ with 1,296,410 items/s
   2.0x faster than HyperQ
   5.4x faster than multiprocessing.Queue
   5.7x faster than faster-fifo

================================================================================
Sleeping 2 seconds before next test configuration...

Results for 100,000 messages of 8192 bytes per producer:
Total messages: 100,000 (1 producers, 1 consumers)
--------------------------------------------------------------------------------
Queue Type           Total Time (s)  Latency (ms)    Throughput (items/s)
--------------------------------------------------------------------------------
BytesHyperQ          0.107           0.001           936,460             
HyperQ               0.203           0.002           492,091             
multiprocessing.Queue 0.497           0.005           201,165             
faster-fifo          0.539           0.005           185,473             

🏆 Fastest: BytesHyperQ with 936,460 items/s
   1.9x faster than HyperQ
   4.7x faster than multiprocessing.Queue
   5.0x faster than faster-fifo

================================================================================
Sleeping 2 seconds before next test configuration...

Results for 100,000 messages of 16384 bytes per producer:
Total messages: 100,000 (1 producers, 1 consumers)
--------------------------------------------------------------------------------
Queue Type           Total Time (s)  Latency (ms)    Throughput (items/s)
--------------------------------------------------------------------------------
BytesHyperQ          0.189           0.002           528,889             
HyperQ               0.303           0.003           329,876             
multiprocessing.Queue 0.658           0.007           152,017             
faster-fifo          0.762           0.008           131,168             

🏆 Fastest: BytesHyperQ with 528,889 items/s
   1.6x faster than HyperQ
   3.5x faster than multiprocessing.Queue
   4.0x faster than faster-fifo

================================================================================
Sleeping 2 seconds before next test configuration...

Results for 100,000 messages of 32768 bytes per producer:
Total messages: 100,000 (1 producers, 1 consumers)
--------------------------------------------------------------------------------
Queue Type           Total Time (s)  Latency (ms)    Throughput (items/s)
--------------------------------------------------------------------------------
BytesHyperQ          0.375           0.004           266,432             
HyperQ               0.484           0.005           206,720             
faster-fifo          0.939           0.009           106,544             
multiprocessing.Queue 1.053           0.011           94,985              

🏆 Fastest: BytesHyperQ with 266,432 items/s
   1.3x faster than HyperQ
   2.5x faster than faster-fifo
   2.8x faster than multiprocessing.Queue

================================================================================
Sleeping 2 seconds before next test configuration...

Results for 100,000 messages of 32 bytes per producer:
Total messages: 400,000 (4 producers, 4 consumers)
--------------------------------------------------------------------------------
Queue Type           Total Time (s)  Latency (ms)    Throughput (items/s)
--------------------------------------------------------------------------------
BytesHyperQ          0.097           0.000           4,142,198           
HyperQ               0.313           0.001           1,276,678           
faster-fifo          0.863           0.002           463,335             
multiprocessing.Queue 2.907           0.007           137,604             

🏆 Fastest: BytesHyperQ with 4,142,198 items/s
   3.2x faster than HyperQ
   8.9x faster than faster-fifo
   30.1x faster than multiprocessing.Queue

================================================================================
Sleeping 2 seconds before next test configuration...

Results for 100,000 messages of 64 bytes per producer:
Total messages: 400,000 (4 producers, 4 consumers)
--------------------------------------------------------------------------------
Queue Type           Total Time (s)  Latency (ms)    Throughput (items/s)
--------------------------------------------------------------------------------
BytesHyperQ          0.108           0.000           3,713,089           
HyperQ               0.336           0.001           1,189,575           
faster-fifo          0.847           0.002           472,108             
multiprocessing.Queue 2.928           0.007           136,622             

🏆 Fastest: BytesHyperQ with 3,713,089 items/s
   3.1x faster than HyperQ
   7.9x faster than faster-fifo
   27.2x faster than multiprocessing.Queue

================================================================================
Sleeping 2 seconds before next test configuration...

Results for 100,000 messages of 128 bytes per producer:
Total messages: 400,000 (4 producers, 4 consumers)
--------------------------------------------------------------------------------
Queue Type           Total Time (s)  Latency (ms)    Throughput (items/s)
--------------------------------------------------------------------------------
BytesHyperQ          0.104           0.000           3,838,310           
HyperQ               0.293           0.001           1,365,044           
faster-fifo          0.880           0.002           454,557             
multiprocessing.Queue 2.968           0.007           134,779             

🏆 Fastest: BytesHyperQ with 3,838,310 items/s
   2.8x faster than HyperQ
   8.4x faster than faster-fifo
   28.5x faster than multiprocessing.Queue

================================================================================
Sleeping 2 seconds before next test configuration...

Results for 100,000 messages of 256 bytes per producer:
Total messages: 400,000 (4 producers, 4 consumers)
--------------------------------------------------------------------------------
Queue Type           Total Time (s)  Latency (ms)    Throughput (items/s)
--------------------------------------------------------------------------------
BytesHyperQ          0.121           0.000           3,306,829           
HyperQ               0.346           0.001           1,156,464           
faster-fifo          0.848           0.002           471,452             
multiprocessing.Queue 3.024           0.008           132,281             

🏆 Fastest: BytesHyperQ with 3,306,829 items/s
   2.9x faster than HyperQ
   7.0x faster than faster-fifo
   25.0x faster than multiprocessing.Queue

================================================================================
Sleeping 2 seconds before next test configuration...

Results for 100,000 messages of 512 bytes per producer:
Total messages: 400,000 (4 producers, 4 consumers)
--------------------------------------------------------------------------------
Queue Type           Total Time (s)  Latency (ms)    Throughput (items/s)
--------------------------------------------------------------------------------
BytesHyperQ          0.139           0.000           2,870,961           
HyperQ               0.413           0.001           968,493             
faster-fifo          0.892           0.002           448,522             
multiprocessing.Queue 3.143           0.008           127,257             

🏆 Fastest: BytesHyperQ with 2,870,961 items/s
   3.0x faster than HyperQ
   6.4x faster than faster-fifo
   22.6x faster than multiprocessing.Queue

================================================================================
Sleeping 2 seconds before next test configuration...

Results for 100,000 messages of 1024 bytes per producer:
Total messages: 400,000 (4 producers, 4 consumers)
--------------------------------------------------------------------------------
Queue Type           Total Time (s)  Latency (ms)    Throughput (items/s)
--------------------------------------------------------------------------------
BytesHyperQ          0.209           0.001           1,918,401           
HyperQ               0.546           0.001           732,611             
faster-fifo          0.929           0.002           430,677             
multiprocessing.Queue 3.299           0.008           121,240             

🏆 Fastest: BytesHyperQ with 1,918,401 items/s
   2.6x faster than HyperQ
   4.5x faster than faster-fifo
   15.8x faster than multiprocessing.Queue

================================================================================
Sleeping 2 seconds before next test configuration...

Results for 100,000 messages of 4096 bytes per producer:
Total messages: 400,000 (4 producers, 4 consumers)
--------------------------------------------------------------------------------
Queue Type           Total Time (s)  Latency (ms)    Throughput (items/s)
--------------------------------------------------------------------------------
BytesHyperQ          0.400           0.001           1,001,018           
HyperQ               0.745           0.002           536,564             
faster-fifo          1.176           0.003           340,031             
multiprocessing.Queue 4.032           0.010           99,196              

🏆 Fastest: BytesHyperQ with 1,001,018 items/s
   1.9x faster than HyperQ
   2.9x faster than faster-fifo
   10.1x faster than multiprocessing.Queue

================================================================================
Sleeping 2 seconds before next test configuration...

Results for 100,000 messages of 8192 bytes per producer:
Total messages: 400,000 (4 producers, 4 consumers)
--------------------------------------------------------------------------------
Queue Type           Total Time (s)  Latency (ms)    Throughput (items/s)
--------------------------------------------------------------------------------
BytesHyperQ          0.679           0.002           589,081             
HyperQ               1.111           0.003           359,917             
faster-fifo          1.554           0.004           257,363             
multiprocessing.Queue 4.742           0.012           84,353              

🏆 Fastest: BytesHyperQ with 589,081 items/s
   1.6x faster than HyperQ
   2.3x faster than faster-fifo
   7.0x faster than multiprocessing.Queue

================================================================================
Sleeping 2 seconds before next test configuration...

Results for 100,000 messages of 16384 bytes per producer:
Total messages: 400,000 (4 producers, 4 consumers)
--------------------------------------------------------------------------------
Queue Type           Total Time (s)  Latency (ms)    Throughput (items/s)
--------------------------------------------------------------------------------
BytesHyperQ          1.278           0.003           313,053             
HyperQ               1.765           0.004           226,633             
faster-fifo          2.442           0.006           163,817             
multiprocessing.Queue 6.288           0.016           63,613              

🏆 Fastest: BytesHyperQ with 313,053 items/s
   1.4x faster than HyperQ
   1.9x faster than faster-fifo
   4.9x faster than multiprocessing.Queue

================================================================================
Sleeping 2 seconds before next test configuration...

Results for 100,000 messages of 32768 bytes per producer:
Total messages: 400,000 (4 producers, 4 consumers)
--------------------------------------------------------------------------------
Queue Type           Total Time (s)  Latency (ms)    Throughput (items/s)
--------------------------------------------------------------------------------
BytesHyperQ          2.374           0.006           168,526             
HyperQ               2.887           0.007           138,536             
faster-fifo          3.804           0.010           105,154             
multiprocessing.Queue 10.354          0.026           38,634              

🏆 Fastest: BytesHyperQ with 168,526 items/s
   1.2x faster than HyperQ
   1.6x faster than faster-fifo
   4.4x faster than multiprocessing.Queue
Running bytes performance benchmarks...
================================================================================

Results for 100,000 messages of 32 bytes per producer:
Total messages: 100,000 (1 producers, 1 consumers)
--------------------------------------------------------------------------------
Queue Type           Total Time (s)  Latency (ms)    Throughput (items/s)
--------------------------------------------------------------------------------
BytesHyperQ          0.018           0.000           5,528,243           
HyperQ               0.090           0.001           1,106,593           
multiprocessing.Queue 0.334           0.003           299,499             
faster-fifo          0.406           0.004           246,330             

🏆 Fastest: BytesHyperQ with 5,528,243 items/s
   5.0x faster than HyperQ
   18.5x faster than multiprocessing.Queue
   22.4x faster than faster-fifo

================================================================================
Sleeping 2 seconds before next test configuration...

Results for 100,000 messages of 64 bytes per producer:
Total messages: 100,000 (1 producers, 1 consumers)
--------------------------------------------------------------------------------
Queue Type           Total Time (s)  Latency (ms)    Throughput (items/s)
--------------------------------------------------------------------------------
BytesHyperQ          0.020           0.000           5,067,022           
HyperQ               0.090           0.001           1,105,261           
multiprocessing.Queue 0.388           0.004           257,635             
faster-fifo          0.397           0.004           251,805             

🏆 Fastest: BytesHyperQ with 5,067,022 items/s
   4.6x faster than HyperQ
   19.7x faster than multiprocessing.Queue
   20.1x faster than faster-fifo

================================================================================
Sleeping 2 seconds before next test configuration...

Results for 100,000 messages of 128 bytes per producer:
Total messages: 100,000 (1 producers, 1 consumers)
--------------------------------------------------------------------------------
Queue Type           Total Time (s)  Latency (ms)    Throughput (items/s)
--------------------------------------------------------------------------------
BytesHyperQ          0.025           0.000           3,988,545           
HyperQ               0.102           0.001           984,694             
multiprocessing.Queue 0.332           0.003           301,471             
faster-fifo          0.402           0.004           248,764             

🏆 Fastest: BytesHyperQ with 3,988,545 items/s
   4.1x faster than HyperQ
   13.2x faster than multiprocessing.Queue
   16.0x faster than faster-fifo

================================================================================
Sleeping 2 seconds before next test configuration...

Results for 100,000 messages of 256 bytes per producer:
Total messages: 100,000 (1 producers, 1 consumers)
--------------------------------------------------------------------------------
Queue Type           Total Time (s)  Latency (ms)    Throughput (items/s)
--------------------------------------------------------------------------------
BytesHyperQ          0.030           0.000           3,280,452           
HyperQ               0.098           0.001           1,024,640           
multiprocessing.Queue 0.344           0.003           290,311             
faster-fifo          0.395           0.004           253,071             

🏆 Fastest: BytesHyperQ with 3,280,452 items/s
   3.2x faster than HyperQ
   11.3x faster than multiprocessing.Queue
   13.0x faster than faster-fifo

================================================================================
Sleeping 2 seconds before next test configuration...

Results for 100,000 messages of 512 bytes per producer:
Total messages: 100,000 (1 producers, 1 consumers)
--------------------------------------------------------------------------------
Queue Type           Total Time (s)  Latency (ms)    Throughput (items/s)
--------------------------------------------------------------------------------
BytesHyperQ          0.028           0.000           3,550,212           
HyperQ               0.105           0.001           956,745             
multiprocessing.Queue 0.357           0.004           279,993             
faster-fifo          0.420           0.004           238,251             

🏆 Fastest: BytesHyperQ with 3,550,212 items/s
   3.7x faster than HyperQ
   12.7x faster than multiprocessing.Queue
   14.9x faster than faster-fifo

================================================================================
Sleeping 2 seconds before next test configuration...

Results for 100,000 messages of 1024 bytes per producer:
Total messages: 100,000 (1 producers, 1 consumers)
--------------------------------------------------------------------------------
Queue Type           Total Time (s)  Latency (ms)    Throughput (items/s)
--------------------------------------------------------------------------------
BytesHyperQ          0.042           0.000           2,390,645           
HyperQ               0.109           0.001           917,085             
multiprocessing.Queue 0.379           0.004           263,922             
faster-fifo          0.413           0.004           241,983             

🏆 Fastest: BytesHyperQ with 2,390,645 items/s
   2.6x faster than HyperQ
   9.1x faster than multiprocessing.Queue
   9.9x faster than faster-fifo

================================================================================
Sleeping 2 seconds before next test configuration...

Results for 100,000 messages of 4096 bytes per producer:
Total messages: 100,000 (1 producers, 1 consumers)
--------------------------------------------------------------------------------
Queue Type           Total Time (s)  Latency (ms)    Throughput (items/s)
--------------------------------------------------------------------------------
BytesHyperQ          0.077           0.001           1,296,410           
HyperQ               0.153           0.002           653,955             
multiprocessing.Queue 0.420           0.004           238,116             
faster-fifo          0.437           0.004           228,823             

🏆 Fastest: BytesHyperQ with 1,296,410 items/s
   2.0x faster than HyperQ
   5.4x faster than multiprocessing.Queue
   5.7x faster than faster-fifo

================================================================================
Sleeping 2 seconds before next test configuration...

Results for 100,000 messages of 8192 bytes per producer:
Total messages: 100,000 (1 producers, 1 consumers)
--------------------------------------------------------------------------------
Queue Type           Total Time (s)  Latency (ms)    Throughput (items/s)
--------------------------------------------------------------------------------
BytesHyperQ          0.107           0.001           936,460             
HyperQ               0.203           0.002           492,091             
multiprocessing.Queue 0.497           0.005           201,165             
faster-fifo          0.539           0.005           185,473             

🏆 Fastest: BytesHyperQ with 936,460 items/s
   1.9x faster than HyperQ
   4.7x faster than multiprocessing.Queue
   5.0x faster than faster-fifo

================================================================================
Sleeping 2 seconds before next test configuration...

Results for 100,000 messages of 16384 bytes per producer:
Total messages: 100,000 (1 producers, 1 consumers)
--------------------------------------------------------------------------------
Queue Type           Total Time (s)  Latency (ms)    Throughput (items/s)
--------------------------------------------------------------------------------
BytesHyperQ          0.189           0.002           528,889             
HyperQ               0.303           0.003           329,876             
multiprocessing.Queue 0.658           0.007           152,017             
faster-fifo          0.762           0.008           131,168             

🏆 Fastest: BytesHyperQ with 528,889 items/s
   1.6x faster than HyperQ
   3.5x faster than multiprocessing.Queue
   4.0x faster than faster-fifo

================================================================================
Sleeping 2 seconds before next test configuration...

Results for 100,000 messages of 32768 bytes per producer:
Total messages: 100,000 (1 producers, 1 consumers)
--------------------------------------------------------------------------------
Queue Type           Total Time (s)  Latency (ms)    Throughput (items/s)
--------------------------------------------------------------------------------
BytesHyperQ          0.375           0.004           266,432             
HyperQ               0.484           0.005           206,720             
faster-fifo          0.939           0.009           106,544             
multiprocessing.Queue 1.053           0.011           94,985              

🏆 Fastest: BytesHyperQ with 266,432 items/s
   1.3x faster than HyperQ
   2.5x faster than faster-fifo
   2.8x faster than multiprocessing.Queue

================================================================================
Sleeping 2 seconds before next test configuration...

Results for 100,000 messages of 32 bytes per producer:
Total messages: 400,000 (4 producers, 4 consumers)
--------------------------------------------------------------------------------
Queue Type           Total Time (s)  Latency (ms)    Throughput (items/s)
--------------------------------------------------------------------------------
BytesHyperQ          0.097           0.000           4,142,198           
HyperQ               0.313           0.001           1,276,678           
faster-fifo          0.863           0.002           463,335             
multiprocessing.Queue 2.907           0.007           137,604             

🏆 Fastest: BytesHyperQ with 4,142,198 items/s
   3.2x faster than HyperQ
   8.9x faster than faster-fifo
   30.1x faster than multiprocessing.Queue

================================================================================
Sleeping 2 seconds before next test configuration...

Results for 100,000 messages of 64 bytes per producer:
Total messages: 400,000 (4 producers, 4 consumers)
--------------------------------------------------------------------------------
Queue Type           Total Time (s)  Latency (ms)    Throughput (items/s)
--------------------------------------------------------------------------------
BytesHyperQ          0.108           0.000           3,713,089           
HyperQ               0.336           0.001           1,189,575           
faster-fifo          0.847           0.002           472,108             
multiprocessing.Queue 2.928           0.007           136,622             

🏆 Fastest: BytesHyperQ with 3,713,089 items/s
   3.1x faster than HyperQ
   7.9x faster than faster-fifo
   27.2x faster than multiprocessing.Queue

================================================================================
Sleeping 2 seconds before next test configuration...

Results for 100,000 messages of 128 bytes per producer:
Total messages: 400,000 (4 producers, 4 consumers)
--------------------------------------------------------------------------------
Queue Type           Total Time (s)  Latency (ms)    Throughput (items/s)
--------------------------------------------------------------------------------
BytesHyperQ          0.104           0.000           3,838,310           
HyperQ               0.293           0.001           1,365,044           
faster-fifo          0.880           0.002           454,557             
multiprocessing.Queue 2.968           0.007           134,779             

🏆 Fastest: BytesHyperQ with 3,838,310 items/s
   2.8x faster than HyperQ
   8.4x faster than faster-fifo
   28.5x faster than multiprocessing.Queue

================================================================================
Sleeping 2 seconds before next test configuration...

Results for 100,000 messages of 256 bytes per producer:
Total messages: 400,000 (4 producers, 4 consumers)
--------------------------------------------------------------------------------
Queue Type           Total Time (s)  Latency (ms)    Throughput (items/s)
--------------------------------------------------------------------------------
BytesHyperQ          0.121           0.000           3,306,829           
HyperQ               0.346           0.001           1,156,464           
faster-fifo          0.848           0.002           471,452             
multiprocessing.Queue 3.024           0.008           132,281             

🏆 Fastest: BytesHyperQ with 3,306,829 items/s
   2.9x faster than HyperQ
   7.0x faster than faster-fifo
   25.0x faster than multiprocessing.Queue

================================================================================
Sleeping 2 seconds before next test configuration...

Results for 100,000 messages of 512 bytes per producer:
Total messages: 400,000 (4 producers, 4 consumers)
--------------------------------------------------------------------------------
Queue Type           Total Time (s)  Latency (ms)    Throughput (items/s)
--------------------------------------------------------------------------------
BytesHyperQ          0.139           0.000           2,870,961           
HyperQ               0.413           0.001           968,493             
faster-fifo          0.892           0.002           448,522             
multiprocessing.Queue 3.143           0.008           127,257             

🏆 Fastest: BytesHyperQ with 2,870,961 items/s
   3.0x faster than HyperQ
   6.4x faster than faster-fifo
   22.6x faster than multiprocessing.Queue

================================================================================
Sleeping 2 seconds before next test configuration...

Results for 100,000 messages of 1024 bytes per producer:
Total messages: 400,000 (4 producers, 4 consumers)
--------------------------------------------------------------------------------
Queue Type           Total Time (s)  Latency (ms)    Throughput (items/s)
--------------------------------------------------------------------------------
BytesHyperQ          0.209           0.001           1,918,401           
HyperQ               0.546           0.001           732,611             
faster-fifo          0.929           0.002           430,677             
multiprocessing.Queue 3.299           0.008           121,240             

🏆 Fastest: BytesHyperQ with 1,918,401 items/s
   2.6x faster than HyperQ
   4.5x faster than faster-fifo
   15.8x faster than multiprocessing.Queue

================================================================================
Sleeping 2 seconds before next test configuration...

Results for 100,000 messages of 4096 bytes per producer:
Total messages: 400,000 (4 producers, 4 consumers)
--------------------------------------------------------------------------------
Queue Type           Total Time (s)  Latency (ms)    Throughput (items/s)
--------------------------------------------------------------------------------
BytesHyperQ          0.400           0.001           1,001,018           
HyperQ               0.745           0.002           536,564             
faster-fifo          1.176           0.003           340,031             
multiprocessing.Queue 4.032           0.010           99,196              

🏆 Fastest: BytesHyperQ with 1,001,018 items/s
   1.9x faster than HyperQ
   2.9x faster than faster-fifo
   10.1x faster than multiprocessing.Queue

================================================================================
Sleeping 2 seconds before next test configuration...

Results for 100,000 messages of 8192 bytes per producer:
Total messages: 400,000 (4 producers, 4 consumers)
--------------------------------------------------------------------------------
Queue Type           Total Time (s)  Latency (ms)    Throughput (items/s)
--------------------------------------------------------------------------------
BytesHyperQ          0.679           0.002           589,081             
HyperQ               1.111           0.003           359,917             
faster-fifo          1.554           0.004           257,363             
multiprocessing.Queue 4.742           0.012           84,353              

🏆 Fastest: BytesHyperQ with 589,081 items/s
   1.6x faster than HyperQ
   2.3x faster than faster-fifo
   7.0x faster than multiprocessing.Queue

================================================================================
Sleeping 2 seconds before next test configuration...

Results for 100,000 messages of 16384 bytes per producer:
Total messages: 400,000 (4 producers, 4 consumers)
--------------------------------------------------------------------------------
Queue Type           Total Time (s)  Latency (ms)    Throughput (items/s)
--------------------------------------------------------------------------------
BytesHyperQ          1.278           0.003           313,053             
HyperQ               1.765           0.004           226,633             
faster-fifo          2.442           0.006           163,817             
multiprocessing.Queue 6.288           0.016           63,613              

🏆 Fastest: BytesHyperQ with 313,053 items/s
   1.4x faster than HyperQ
   1.9x faster than faster-fifo
   4.9x faster than multiprocessing.Queue

================================================================================
Sleeping 2 seconds before next test configuration...

Results for 100,000 messages of 32768 bytes per producer:
Total messages: 400,000 (4 producers, 4 consumers)
--------------------------------------------------------------------------------
Queue Type           Total Time (s)  Latency (ms)    Throughput (items/s)
--------------------------------------------------------------------------------
BytesHyperQ          2.374           0.006           168,526             
HyperQ               2.887           0.007           138,536             
faster-fifo          3.804           0.010           105,154             
multiprocessing.Queue 10.354          0.026           38,634              

🏆 Fastest: BytesHyperQ with 168,526 items/s
   1.2x faster than HyperQ
   1.6x faster than faster-fifo
   4.4x faster than multiprocessing.Queue

Results may vary depending on hardware and system configuration.

🔧 API Reference

HyperQ

class HyperQ:
    def __init__(self, capacity: int, name: str = None)

    def put(self, item) -> bool
    def get(self)  # Blocks until data is available
    def empty(self) -> bool
    def full(self) -> bool
    def size(self) -> int
    def clear(self)

BytesHyperQ

class BytesHyperQ:
    def __init__(self, capacity: int, name: str = None)

    def put(self, data: bytes) -> bool
    def get(self) -> bytes  # Blocks until data is available
    def empty(self) -> bool
    def full(self) -> bool
    def size(self) -> int
    def clear(self)

Parameters

  • capacity: Maximum size of the queue in bytes
  • name: Optional name for the shared memory segment (max 28 characters)

Important Notes

  • Blocking operations: get() blocks indefinitely until data is available
  • No timeout support: Currently no timeout functionality is implemented
  • Queue names: Must be 28 characters or less
  • Platform limitation: Only works on Unix-like systems (Linux/macOS)

🧪 Running Tests

# Run all tests
pytest

# Run with coverage
pytest --cov=hyperq

📈 Running Benchmarks

# 1 producer, 1 consumer benchmark
python benchmarks/benchmark_bytes_transfering_1p_1c.py

# 10 producers, 10 consumers benchmark
python benchmarks/benchmark_bytes_transfering_10p_10c.py

🏗️ Building from Source

Prerequisites

  • Python 3.10+
  • Cython >= 0.29.0
  • C++ compiler with C++20 support (GCC 8+, Clang 10+)
  • Unix-like system (Linux or macOS)

Build Steps

# Clone the repository
git clone https://github.com/martinmkhitaryan/hyperq.git
cd hyperq

# Install build dependencies
pip install -e ".[test]"

# Build the extension
python setup.py build_ext --inplace

🤝 Contributing

Development Setup

  1. Fork the repository
  2. Create a virtual environment: python -m venv .venv
  3. Activate it: source .venv/bin/activate (Linux/macOS)
  4. Install development dependencies: pip install -e ".[test]"
  5. Run tests: pytest
  6. Make your changes and submit a pull request

📝 License

This project is licensed under the MIT License - see the LICENSE file for details.

🙏 Acknowledgments

  • Built with Cython for high-performance Python extensions
  • Uses POSIX shared memory and threading primitives
  • Inspired by the need for faster inter-process communication in Python

📞 Support

🔄 Version History

  • 0.0.9: Updated benchmarks in README.md.
  • 0.0.8: Updated benchmark suite, test suite, pyproject.toml configuration; optimized CI/CD release workflow.
  • 0.0.7: Replaced is_creator logic with ref count logic for better shared memory management; identified and documented issue with multiprocessing spawn start method not working properly with multiple consumers and producers.
  • 0.0.6: Fix cibuildwheel configurations.
  • 0.0.5: Added platform-specific build and skip patterns for Linux and macOS; improved cibuildwheel configuration with separate build targets for manylinux and macosx wheels
  • 0.0.4: Fixed cibuildwheel configuration for proper multi-platform wheel builds; added architecture-specific settings for Linux (x86_64/i686) and macOS (x86_64/arm64);
  • 0.0.3: Fixed cibuildwheel configuration for proper linux wheel build;
  • 0.0.2: Added proper PyPI wheel support for Linux and macOS using cibuildwheel; improved release workflow for multi-platform builds and C++20 compatibility
  • 0.0.1: Initial release with HyperQ and BytesHyperQ implementations

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

hyperq-0.0.9.tar.gz (110.5 kB view details)

Uploaded Source

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

hyperq-0.0.9-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (180.9 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ x86-64

hyperq-0.0.9-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (185.9 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ i686manylinux: glibc 2.5+ i686

hyperq-0.0.9-cp312-cp312-macosx_11_0_arm64.whl (138.6 kB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

hyperq-0.0.9-cp312-cp312-macosx_10_9_x86_64.whl (140.5 kB view details)

Uploaded CPython 3.12macOS 10.9+ x86-64

hyperq-0.0.9-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (180.3 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ x86-64

hyperq-0.0.9-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (185.7 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ i686manylinux: glibc 2.5+ i686

hyperq-0.0.9-cp311-cp311-macosx_11_0_arm64.whl (137.7 kB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

hyperq-0.0.9-cp311-cp311-macosx_10_9_x86_64.whl (139.2 kB view details)

Uploaded CPython 3.11macOS 10.9+ x86-64

hyperq-0.0.9-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (180.8 kB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ x86-64

hyperq-0.0.9-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (185.8 kB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ i686manylinux: glibc 2.5+ i686

hyperq-0.0.9-cp310-cp310-macosx_11_0_arm64.whl (137.4 kB view details)

Uploaded CPython 3.10macOS 11.0+ ARM64

hyperq-0.0.9-cp310-cp310-macosx_10_9_x86_64.whl (138.6 kB view details)

Uploaded CPython 3.10macOS 10.9+ x86-64

File details

Details for the file hyperq-0.0.9.tar.gz.

File metadata

  • Download URL: hyperq-0.0.9.tar.gz
  • Upload date:
  • Size: 110.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.12.9

File hashes

Hashes for hyperq-0.0.9.tar.gz
Algorithm Hash digest
SHA256 0d3a68daae52ea31d61bbfbdd72b2e6eb742d0755b36b5741364e975e021baa5
MD5 350ef004aeea5ee200eb0560cce44180
BLAKE2b-256 4b55d9394ee275112f83b18fd165db1207cf2695b453e6c361936406038b46c2

See more details on using hashes here.

Provenance

The following attestation bundles were made for hyperq-0.0.9.tar.gz:

Publisher: release.yml on martinmkhitaryan/hyperq

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file hyperq-0.0.9-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for hyperq-0.0.9-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 e7631674a647862da365e0b818e6c7931326b2e7e5ae1de35a64b7b098089661
MD5 5886cdc141d63a75cedda9768280c31b
BLAKE2b-256 6ad76e753f34e199e4e669921b6b1635e708ebb608094d020e29ea2e4fee1045

See more details on using hashes here.

Provenance

The following attestation bundles were made for hyperq-0.0.9-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:

Publisher: release.yml on martinmkhitaryan/hyperq

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file hyperq-0.0.9-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl.

File metadata

File hashes

Hashes for hyperq-0.0.9-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 e581b448f95cc9a2235263ed0d094ae84afc4255aa0046ce8b32cd275183477f
MD5 050f32643ccdcd8d88ed376e182216fc
BLAKE2b-256 b7c3a7278e8a03412dc0a3557610e79089e12a2e2e960ef22c933a1b31c4c064

See more details on using hashes here.

Provenance

The following attestation bundles were made for hyperq-0.0.9-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl:

Publisher: release.yml on martinmkhitaryan/hyperq

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file hyperq-0.0.9-cp312-cp312-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for hyperq-0.0.9-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 7c768b02cb65d41532c29ae2fb257df375dd02d27d617039624df019007f87b6
MD5 240ee7258dab523764a811d1c15ed6ee
BLAKE2b-256 68635286297d001e1a7c346dae7208185ebdf433c0f505b0e490025dbb2aa839

See more details on using hashes here.

Provenance

The following attestation bundles were made for hyperq-0.0.9-cp312-cp312-macosx_11_0_arm64.whl:

Publisher: release.yml on martinmkhitaryan/hyperq

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file hyperq-0.0.9-cp312-cp312-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for hyperq-0.0.9-cp312-cp312-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 1561f766706be8568b01410f06890269e62bc1ffe290bbda4446cf5b6c225bc1
MD5 ead27b8e86286e6dba81f9f61b28d9e3
BLAKE2b-256 bffb2957fae8f6316ef3d57aeb8691a88695ff43fe521e78d38134fcab222e79

See more details on using hashes here.

Provenance

The following attestation bundles were made for hyperq-0.0.9-cp312-cp312-macosx_10_9_x86_64.whl:

Publisher: release.yml on martinmkhitaryan/hyperq

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file hyperq-0.0.9-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for hyperq-0.0.9-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 f4ebe80767919e252ab713589dfbfbaf5ee5a2c3dc605e3567c60252be70e63c
MD5 deed211a68d8f1e07c8fbe84678ddcc2
BLAKE2b-256 a3c5c827426738320f4957a863b9ec5b532b688ed0b21d5054fc6218364dd252

See more details on using hashes here.

Provenance

The following attestation bundles were made for hyperq-0.0.9-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:

Publisher: release.yml on martinmkhitaryan/hyperq

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file hyperq-0.0.9-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl.

File metadata

File hashes

Hashes for hyperq-0.0.9-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 d1f7633bc8f68b4fd9fc9985c0df4f1e3744adcfe3d59e1ff89f00fbe1133def
MD5 f0c11ecca5494dadb4777bf703e0a16e
BLAKE2b-256 30399c5da0b245879b3eae0a7b1264252857b5a86fb3cc922244e7b1be7c7951

See more details on using hashes here.

Provenance

The following attestation bundles were made for hyperq-0.0.9-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl:

Publisher: release.yml on martinmkhitaryan/hyperq

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file hyperq-0.0.9-cp311-cp311-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for hyperq-0.0.9-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 e7461edca5be930b2c57776ce5f038e1cb6cc8f93f13ee37d5bc9511ac7046cb
MD5 f011f1fc5050c9544d21c73c5e5df289
BLAKE2b-256 83f6303d0a80151436bf3494612e40889d1eecdd11064fca854505112b472f2e

See more details on using hashes here.

Provenance

The following attestation bundles were made for hyperq-0.0.9-cp311-cp311-macosx_11_0_arm64.whl:

Publisher: release.yml on martinmkhitaryan/hyperq

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file hyperq-0.0.9-cp311-cp311-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for hyperq-0.0.9-cp311-cp311-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 d559c12066a88d222d92db26ce61b2f7ce105591323c7fba33f7b51c76d75a19
MD5 8cbb6a97b89247fdbc3cbbde755a188c
BLAKE2b-256 96ef34b8d8fe9ed43d79fbbd077041e42a16f2109b47903d1ec7b75421f29cca

See more details on using hashes here.

Provenance

The following attestation bundles were made for hyperq-0.0.9-cp311-cp311-macosx_10_9_x86_64.whl:

Publisher: release.yml on martinmkhitaryan/hyperq

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file hyperq-0.0.9-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for hyperq-0.0.9-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 ba7ea3a7428dea6d20ea0f7b7f84869d75ce2a092a297e387310747fab05a4d6
MD5 0a9aebbd29b0c32a2f24c0928b7d0c68
BLAKE2b-256 28cba9c8dae37cf08c4010a9245c27d3a830234e212fc2f93e47a8e453436c97

See more details on using hashes here.

Provenance

The following attestation bundles were made for hyperq-0.0.9-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:

Publisher: release.yml on martinmkhitaryan/hyperq

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file hyperq-0.0.9-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl.

File metadata

File hashes

Hashes for hyperq-0.0.9-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 5c6658b05dcbac1b581c8de5f3b60f634c5755048293861ded9a57ad047886d1
MD5 edd4cbf8bf8416805cd4bd1ea57c1079
BLAKE2b-256 812ff09765cdecb52406da53b6df80c9cd23541f4dfed3f78771051f171adc60

See more details on using hashes here.

Provenance

The following attestation bundles were made for hyperq-0.0.9-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl:

Publisher: release.yml on martinmkhitaryan/hyperq

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file hyperq-0.0.9-cp310-cp310-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for hyperq-0.0.9-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 87af23a1fc4607747dca86b4067ec9087a232c351972f8c6e77d6ef5fe5cd698
MD5 4997baf278edfa30a03514200540bffa
BLAKE2b-256 dd891ba8ec34e23ce7e03dea43f93e707f54e07250b247fc9b3a0c399bd5122f

See more details on using hashes here.

Provenance

The following attestation bundles were made for hyperq-0.0.9-cp310-cp310-macosx_11_0_arm64.whl:

Publisher: release.yml on martinmkhitaryan/hyperq

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file hyperq-0.0.9-cp310-cp310-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for hyperq-0.0.9-cp310-cp310-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 eba20957676e175c2fbcd325a3dadc27dd089163a03c2d5f7180999444f8f211
MD5 e6c21f29ccd3c749b10c10cec38d9243
BLAKE2b-256 6ff6ba8eaaebbc74310642059de983e53314354018040a852c0f8bce4c494499

See more details on using hashes here.

Provenance

The following attestation bundles were made for hyperq-0.0.9-cp310-cp310-macosx_10_9_x86_64.whl:

Publisher: release.yml on martinmkhitaryan/hyperq

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

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