An open-source python package with multiple python tools.
Project description
AgGarage
An open-source python package with multiple python tools.
Installation
pip install aggarage
Usage
from aggarage import *
@blitz # Example of a decorator from the package, it optimizes heavy calculations
def heavy_calc(x):
total = 0
for i in range(x):
total += i ** 2
return total
print(heavy_calc(10_000_000))
Timed Variables
AgGarage allows you to store variables over time and retrieve past values.
from aggarage import create_timed_variable, get_value_of_timed_variable, clear_all_timed_variables
create_timed_variable("score", 100)
create_timed_variable("score", 200)
print(get_value_of_timed_variable("score")) # latest value
print(get_value_of_timed_variable("score", "-1m")) # value 1 minute ago
clear_all_timed_variables() # removes all timed variable data
Utilities
AgGarage also provides common utility functions:
fib(n) – Fibonacci number
factorial(n) / factorial_recursive(n) – Factorial
is_prime(num) – Prime check
gcd(a, b) / lcm(a, b) – Greatest/common divisors
reverse_string(s) / is_palindrome(s) – String utilities
sum_of_squares(n) – Sum of squares
printf(text, color="red") – Colored terminal output
Notes
Timed variables are stored with second-level precision and automatically prune entries older than 30 minutes.
The @blitz decorator uses JIT compilation if available or threads as a fallback to speed up computations.
lightning
The @lightning decorator uses aggressive parallelization and multiprocessing to optimize performance for CPU-bound tasks.
It is much faster than @blitz for heavy computations but has more overhead, so it is best suited for very intensive tasks.
Use @lightning when you need maximum speedup for complex calculations that can be parallelized.
from aggarage import *
@lightning
def _heavy_computation_lightning(n):
total = 0
for i in range(n):
total += sum(j * j for j in range(1000))
return total
@blitz
def _heavy_computation_blitz(n):
total = 0
for i in range(n):
total += sum(j * j for j in range(1000))
return total
if __name__ == "__main__":
import time
n = 1000
start = time.time()
result_lightning = _heavy_computation_lightning(n)
end = time.time()
print(f"Lightning result: {result_lightning}, Time taken: {end - start:.4f} seconds")
start = time.time()
result_blitz = _heavy_computation_blitz(n)
end = time.time()
print(f"Blitz result: {result_blitz}, Time taken: {end - start:.4f} seconds")
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
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file aggarage-0.3.5.tar.gz.
File metadata
- Download URL: aggarage-0.3.5.tar.gz
- Upload date:
- Size: 2.0 MB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.10.0
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
da7e253f3adadb18d1cc1237f8af52749bd509c9057e576509e1fa22d8aef4b1
|
|
| MD5 |
f7f2704b0ab48753c8a5533cb1da6549
|
|
| BLAKE2b-256 |
58a2ce3968c207b7ecde4ad2b0a773756adcc3a1bb53758b734a51f51bcfdf00
|
File details
Details for the file aggarage-0.3.5-py3-none-any.whl.
File metadata
- Download URL: aggarage-0.3.5-py3-none-any.whl
- Upload date:
- Size: 79.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.10.0
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
613cd99a765878123559807f48ffbe0b209277a5b5abc79b1831c5a47f34825a
|
|
| MD5 |
c8df759f0d7d6b2ad438fe7b9d3c2127
|
|
| BLAKE2b-256 |
d4b9d8583517eec112ae4d91be9f261658113c476e871a78db74729343ab8ef0
|