Introduction to Queuelib
Queuelib is a simple and lightweight Python library designed for managing queues efficiently. It is widely used for applications requiring task management, message handling, or queue-based processing with persistent storage support when needed. If you’re looking for a straightforward queue library that supports both in-memory and disk-based queues, Queuelib is a great choice.
Key Features
- Support for persistent and non-persistent queues
- Simple and minimalistic API
- Ideal for lightweight task management
Installing Queuelib
You can install Queuelib using pip:
pip install queuelib
Examples of Useful APIs
1. Creating an In-Memory Queue
The `FifoMemoryQueue` class allows you to create a first-in-first-out (FIFO) queue in memory:
from queuelib.queue import FifoMemoryQueue queue = FifoMemoryQueue() queue.push(b'Task 1') queue.push(b'Task 2') print(queue.pop()) # Output: b'Task 1' print(queue.pop()) # Output: b'Task 2'
2. Persistent Disk-Based Queue
Use `FifoDiskQueue` for a disk-persistent queue that stores tasks on disk:
from queuelib.queue import FifoDiskQueue queue = FifoDiskQueue('queue_storage') queue.push(b'Task 1') queue.push(b'Task 2') print(queue.pop()) # Output: b'Task 1' print(queue.pop()) # Output: b'Task 2'
The stored tasks are maintained even after the application restarts.
3. LIFO Queue with `LifoMemoryQueue`
Queuelib supports a last-in-first-out (LIFO) queue through `LifoMemoryQueue`:
from queuelib.queue import LifoMemoryQueue queue = LifoMemoryQueue() queue.push(b'Task 1') queue.push(b'Task 2') print(queue.pop()) # Output: b'Task 2' print(queue.pop()) # Output: b'Task 1'
4. Checking Queue Length
Get the current length of the queue using the `__len__` method:
queue.push(b'Task 1') print(len(queue)) # Output: 1 queue.pop() print(len(queue)) # Output: 0
5. Clearing the Queue
Use `close` and `clear` methods to manage resources and flush the queue:
queue.close() queue.clear()
6. Using Queuelib in a Complex Application
Let’s create a simple task queue processor using Queuelib:
from queuelib.queue import FifoMemoryQueue def process_task(task): print(f'Processing: {task}') # Create a queue queue = FifoMemoryQueue() # Add tasks to the queue queue.push(b'Task 1') queue.push(b'Task 2') queue.push(b'Task 3') # Process tasks while len(queue) > 0: task = queue.pop() process_task(task)
This script demonstrates how Queuelib can be a building block for task-oriented applications.
Conclusion
Queuelib is a versatile library that simplifies working with both in-memory and persistent queues. Its APIs are intuitive, making it an excellent choice for lightweight task management. Start integrating Queuelib into your Python projects today to streamline your task processing workflows.