Repolode
P403n1x87

P403n1x87/austin

用 C 编写的 CPython 栈采样器,无需修改代码即可低开销地分析运行中的 Python 进程。

Star
2,215
Fork
68
未关闭 Issue
10
最近提交
10天前

这是什么?

Austin 通过从进程外部读取 CPython 解释器的内存来采样正在运行的调用栈,不需要修改被分析代码,也不需要插桩,因此可以直接挂载到线上运行的应用上,查看时间或内存消耗在哪里。

采样结果以紧凑的二进制 MOJO 格式输出,可转换为 FlameGraph 的折叠栈格式、Speedscope JSON 或 Google pprof。它支持 mod_wsgi 等多进程应用,可采样垃圾回收器状态,并提供 where 模式,用于打印进程内所有线程的当前调用栈。项目以单个 C 可执行文件发布,支持 Linux、Windows 和 macOS 上的 Python 3.9 至 3.14。

核心功能

  • 01无需插桩,通过读取解释器内存采集 CPython 调用栈。
  • 02支持时间分析、内存分析以及同时采集两者的完整模式。
  • 03可跟踪子进程,并采样子解释器。
  • 04输出 MOJO 二进制数据,可转换为 FlameGraph、Speedscope 和 pprof 格式。
  • 05提供 where 模式,打印运行中进程所有线程的调用栈。
  • 06以单个 C 可执行文件发布,没有第三方依赖。

适用场景

  • 在不修改代码的前提下定位 Python 应用的性能瓶颈。
  • 对线上服务或长时间运行的脚本做低开销分析。
  • 分析 Apache mod_wsgi 等多进程 Web 部署。
  • 从 Python 程序生成火焰图,对比 CPU 或内存时间的分布。

快速上手

  1. 1

    使用 pip 从 PyPI 安装 Austin

    pip install austin-dist
  2. 2

    运行 austin 并使用命令或 -p PID 选项对 Python 进程进行采样;选项详见用法帮助

使用前须知

  • 仅支持对 CPython 进程进行性能分析。
  • 采用 GPL-3.0 许可证,这是一种 Copyleft 许可证,可能限制你复用代码的方式。

标签

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

常见问题

austin 是什么?
用 C 编写的 CPython 栈采样器,无需修改代码即可低开销地分析运行中的 Python 进程。 Austin 通过从进程外部读取 CPython 解释器的内存来采样正在运行的调用栈,不需要修改被分析代码,也不需要插桩,因此可以直接挂载到线上运行的应用上,查看时间或内存消耗在哪里。
austin 可以免费使用吗?用的什么许可证?
austin 以 GPL-3.0 许可证开源。用于商业产品前,请先确认许可证条款。
austin 还在维护吗?
活跃维护中。austin 最近一次提交是在 2026年10月28日。
austin 适合用来做什么?
在不修改代码的前提下定位 Python 应用的性能瓶颈。 对线上服务或长时间运行的脚本做低开销分析。 分析 Apache mod_wsgi 等多进程 Web 部署。 从 Python 程序生成火焰图,对比 CPU 或内存时间的分布。
austin 怎么安装和运行?
使用 pip 从 PyPI 安装 Austin: pip install austin-dist 运行 austin 并使用命令或 -p PID 选项对 Python 进程进行采样;选项详见用法帮助
在哪里获取 austin?
源代码和安装说明在 GitHub 上:https://github.com/P403n1x87/austin

概要由 AI 根据项目 README 生成;GitHub 数据每日更新。

相关项目