Skip to main content

Non‑invasive performance metrics collection for Python

Project description

clinic-py

Non-invasive performance metrics collection for Python applications, inspired by Node.js clinic.

Features

  • Non-invasive monitoring: Collect performance metrics without modifying your code
  • System metrics: CPU usage, memory consumption, I/O operations, context switches
  • Python stack analysis: Categorize frames into application, library, and core code
  • Binary metrics format: Efficient storage and parsing of performance data
  • Web dashboard: Interactive visualization of collected metrics
  • Cross-platform: Supports Linux, macOS, and other Unix-like systems

Installation

pip install clinic-py

Quick Start

Monitor a Python script

python -m clinic_py run your_script.py

This will execute your script and collect performance metrics in the .clinic_py/ directory.

View results in web dashboard

python -m clinic_py serve

Then open http://localhost:8000 in your browser to explore the performance data.

Usage

Command Line Interface

# Run a script under monitoring
python -m clinic_py run [--outdir DIR] script.py

# Serve web dashboard
python -m clinic_py serve [--outdir DIR] [--port PORT]

Options

  • --outdir: Directory where metrics are stored (default: .clinic_py)
  • --port: Port for the web dashboard (default: 8000)

How it Works

clinic-py uses a C extension to periodically sample system resources with minimal overhead:

  1. Resource Sampling: Collects CPU time, memory usage, I/O counters using getrusage()
  2. Stack Sampling: Analyzes Python call stacks to categorize code execution
  3. Binary Storage: Writes metrics to efficient binary format
  4. Web Visualization: Provides interactive charts and summaries

Requirements

  • Python 3.9+
  • Unix-like operating system (Linux, macOS, etc.)
  • C compiler for building the extension

License

MIT License - see LICENSE file for details.

Contributing

Contributions are welcome! Please feel free to submit issues and pull requests.

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

clinic_py-0.1.0.tar.gz (16.9 kB view details)

Uploaded Source

File details

Details for the file clinic_py-0.1.0.tar.gz.

File metadata

  • Download URL: clinic_py-0.1.0.tar.gz
  • Upload date:
  • Size: 16.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.12.5

File hashes

Hashes for clinic_py-0.1.0.tar.gz
Algorithm Hash digest
SHA256 eebae4299b08245592457a1929725d1d8040b49090b96f67b4c4d11d91295be7
MD5 0422ff8e8f0e4c653927adff6776ef68
BLAKE2b-256 066c0ae895aa3645112d9d1ef729d059c7cdd44788265ed734713aabf5971c0b

See more details on using hashes here.

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