Repolode
P403n1x87

P403n1x87/austin

A low-overhead, zero-instrumentation frame stack sampler for CPython, written in C, for profiling running Python processes.

Stars
2,212
Forks
68
Open issues
10
Last commit
9 days ago

What is it?

Austin samples the call stacks of running CPython processes by reading the interpreter's memory from outside the process. It needs no code changes or instrumentation, so it can be attached to a live application, including in production, to see where time or memory is being spent.

Its output is a compact binary format called MOJO, which can be converted to collapsed stacks for FlameGraph, Speedscope JSON, or Google pprof. It also works with multi-process applications such as mod_wsgi, can sample garbage collector state, and offers a 'where' mode that dumps the current stacks of all threads in a process. Austin is distributed as a single C binary and supports Python 3.9 through 3.14 on Linux, Windows, and macOS.

Key features

  • 01Samples CPython stacks by reading interpreter memory, with no code instrumentation.
  • 02Supports time profiling, memory profiling, and a combined full mode.
  • 03Follows child processes and samples sub-interpreters.
  • 04Outputs MOJO binary data convertible to FlameGraph, Speedscope, and pprof formats.
  • 05Includes a where mode that dumps all thread stacks of a running process.
  • 06Ships as a single C binary with no third-party dependencies.

Use cases

  • Finding performance bottlenecks in a Python application without modifying its code.
  • Profiling a live production service or a long-running script with minimal overhead.
  • Profiling multi-process web deployments such as Apache mod_wsgi workers.
  • Generating flame graphs from Python programs to compare where CPU or memory time goes.

Quick start

  1. 1

    Install Austin from PyPI with pip

    pip install austin-dist
  2. 2

    Run austin with the command or -p PID option to sample a Python process; see the usage help for options

Things to know

  • Only profiles CPython processes.
  • Licensed under GPL-3.0, a copyleft license that may restrict how you can reuse the code.

Topics

#python#profiling#performance#debugging#flamegraph#sampling-profiler#debugging-tools

FAQ

What is austin?
A low-overhead, zero-instrumentation frame stack sampler for CPython, written in C, for profiling running Python processes. Austin samples the call stacks of running CPython processes by reading the interpreter's memory from outside the process. It needs no code changes or instrumentation, so it can be attached to a live application, including in production, to see where time or memory is being spent.
Is austin free to use? What license does it have?
austin is open source under the GPL-3.0 license. Check the license terms before using it in commercial products.
Is austin still maintained?
Actively maintained. The last commit to austin was on Oct 28, 2026.
What can I use austin for?
Finding performance bottlenecks in a Python application without modifying its code. Profiling a live production service or a long-running script with minimal overhead. Profiling multi-process web deployments such as Apache mod_wsgi workers. Generating flame graphs from Python programs to compare where CPU or memory time goes.
How do I install austin?
Install Austin from PyPI with pip: pip install austin-dist Run austin with the command or -p PID option to sample a Python process; see the usage help for options
Where can I get austin?
The source code and installation instructions are on GitHub: https://github.com/P403n1x87/austin

Summary generated by AI from the project's README. GitHub stats refresh daily.

Related projects