Like Lego for your Code - Modular Python Memory Monitoring & Valgrind Integration
Drop-in memory monitoring for any Python project. Track memory usage, detect leaks, profile tools, and integrate with Valgrind - all with minimal overhead.
- π― Zero Config - Works out of the box
- π Real-time Monitoring - Live memory tracking
- π Leak Detection - Automatic leak identification
- π οΈ Tool Profiling - Per-function memory analysis
- πΊ Live Dashboard - Beautiful terminal UI (optional)
- π§ Valgrind Integration - Deep C-extension analysis
- π CI/CD Ready - GitHub Actions integration
- π§© Modular - Use only what you need
pip install memoryguardfrom memoryguard import MemoryGuard, track_memory
# Initialize
guard = MemoryGuard(threshold_mb=500)
# Track any function
@track_memory("heavy_computation", guard)
def heavy_computation():
return sum(i**2 for i in range(1000000))
result = heavy_computation()
# Check memory manually
alert = guard.check_memory("after_computation")
if alert:
print(f"β οΈ {alert.message}")from memoryguard import memory_context
with memory_context("database_query", guard):
# Your code here
large_dataset = fetch_data()
process(large_dataset)
# Memory automatically trackedfrom memoryguard import MemoryDashboard
dashboard = MemoryDashboard(guard)
with dashboard.live_display():
# Your long-running operation
run_big_analysis()from memoryguard import track_memory, get_memory_guard
guard = get_memory_guard(threshold_mb=1000)
@track_memory("my_function", guard)
def my_function():
passfrom memoryguard import MemoryInstrumentedTool
class MyScanner(MemoryInstrumentedTool):
tool_name = "myscanner"
def scan(self, target):
with self.memory_context(target):
return self.do_scan(target)from memoryguard import MemoryAwareOrchestrator
orchestrator = MemoryAwareOrchestrator(max_memory_mb=2000)
orchestrator.register_tool(my_tool)
result = await orchestrator.execute_with_memory_control(
"my_tool", target, my_tool.scan(target)
)If you have rich installed:
pip install memoryguard[dashboard]from memoryguard import MemoryDashboard
dashboard = MemoryDashboard(guard)
# Simple text output
print(dashboard.get_simple_display())
# [Memory: 456.3MB | Status: OK | Alerts: 0]
# Or live display
with dashboard.live_display():
run_analysis()Shows:
- Live memory graph (sparkline)
- RSS/VMS usage
- Recent alerts
- Tool breakdown
- Progress bars
For C-extension analysis:
from memoryguard import ValgrindWrapper
wrapper = ValgrindWrapper()
if wrapper.available:
result = wrapper.check_python_module(
"my_c_extension",
timeout=300
)
print(result['valgrind_log'])name: Memory Check
on: [push, pull_request]
jobs:
memory-test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: actions/setup-python@v4
with:
python-version: '3.11'
- name: Install
run: pip install memoryguard
- name: Run with Memory Tracking
run: |
python -c "
from memoryguard import MemoryGuard
guard = MemoryGuard()
# ... your code ...
guard.generate_report('memory-report.json')
"
- name: Upload Report
uses: actions/upload-artifact@v3
with:
name: memory-report
path: memory-report.jsonfrom memoryguard import memory_efficient_batch
async def process_targets(targets):
async def scan_batch(batch):
return [await scan(t) for t in batch]
return await memory_efficient_batch(
targets,
scan_batch,
batch_size=10
)# Reset baseline
guard.reset_baseline()
# Run your code
suspected_leaky_function()
# Check for leaks
leak_report = guard.detect_leaks("my_function")
if leak_report:
print(f"Leaked: {leak_report['total_leaked_mb']}MB")stats = guard.force_gc()
print(f"Freed {stats['memory_freed_mb']:.1f}MB")
print(f"Collected {stats['objects_collected']} objects")guard = MemoryGuard(
threshold_mb=500, # Warning threshold
critical_threshold_mb=1000, # Critical threshold
check_interval=30, # Background check interval (seconds)
enable_snapshots=True, # Store history
log_dir="~/.memoryguard/logs" # Report location
)# Install dev dependencies
pip install memoryguard[dev]
# Run tests
pytest tests/ -v
# With coverage
pytest tests/ --cov=memoryguard
# Benchmarks
pytest tests/ --benchmark-onlymemoryguard/
βββ memoryguard/
β βββ __init__.py # Main exports
β βββ core.py # MemoryGuard, Valgrind
β βββ integration.py # Tool integration
β βββ dashboard.py # TUI (requires rich)
βββ tests/
β βββ test_memoryguard.py
βββ examples/
β βββ demo.py
βββ pyproject.toml
βββ README.md
git submodule add https://github.com/SHAdd0WTAka/memoryguard.git third_party/memoryguard# Clone anywhere
git clone https://github.com/SHAdd0WTAka/memoryguard.git
# Install in editable mode
pip install -e ./memoryguardJust copy memoryguard/core.py to your project - it's self-contained!
- Python 3.8+
- psutil
- Optional: rich (for dashboard)
- Optional: valgrind (for C analysis)
MIT License - see LICENSE file
Created for CLAWDBOT / Zen-AI-Pentest - now available for everyone!
Like Lego for your Code π§π§± - Just drop it in and go!