
Blackfire Continuous Profiler
Low-overhead continuous profiling for app performance optimization.
Discover top open-source software, updated regularly with real-world adoption signals.

Zero‑overhead sampling profiler for live Python applications
A low‑overhead, Rust‑based sampling profiler that attaches to running Python processes without code changes, generating flame graphs, live top views, and stack dumps across Linux, macOS, Windows, and FreeBSD.
py-spy is a Rust‑implemented sampling profiler that can attach to any running CPython process without modifying its code. By reading the target's memory directly, it provides accurate timing information while keeping overhead minimal, making it safe for use in production environments.
The tool offers three sub‑commands: record for generating flame‑graph SVGs or speedscope files, top for a live, top‑like view of hot functions, and for a one‑off stack trace with optional locals. It supports profiling native extensions (), tracing subprocesses (), and works on Linux, macOS, Windows, and FreeBSD. Installation is straightforward via pip, Homebrew, Cargo, or distribution packages, and the binary runs out‑of‑process, avoiding any impact on the profiled application.
dump--native--subprocessesDevelopers, SREs, and performance engineers can quickly diagnose bottlenecks, even in multi‑process services, without redeploying or restarting the application.
When teams consider py-spy, these hosted platforms usually appear on the same shortlist.
Looking for a hosted option? These are the services engineering teams benchmark against before choosing open source.
Generate flame graph for a production web service
Visualize hot paths without restarting, identify bottlenecks, and reduce latency.
Live monitoring of a data‑processing script
Use `py-spy top` to see real‑time function usage and spot stalls.
Profile a Cython‑accelerated module
Enable `--native` to include native frames, helping optimize compiled extensions.
Trace multiprocessing workers in a Gunicorn deployment
Attach with `--subprocesses` to collect samples from all worker processes.
py-spy can profile any running Python program without code changes, making it safe for production where other profilers add noticeable overhead.
It reads the target process's memory via system calls, inspects the interpreter state, and reconstructs call stacks without running inside the Python process.
Yes, using the `--native` flag. For best results the extension should be compiled with symbols.
Pass the `--subprocesses` flag; py-spy will automatically attach to child Python processes and include their samples.
Attaching to an existing process often requires root on Linux and always on macOS; creating the process with py-spy avoids this requirement.
Project at a glance
ActiveLast synced 4 days ago