用 C 编写的 CPython 栈采样器,无需修改代码即可低开销地分析运行中的 Python 进程。
gaogaotiantian/viztracer
一款低开销的 Python 追踪工具,将代码执行过程记录并以交互式时间线可视化。
- Star
- 7,775
- Fork
- 480
- 未关闭 Issue
- 33
- 最近提交
- 上个月
这是什么?
VizTracer 是一款用于追踪和可视化 Python 代码执行过程的工具,兼具日志、调试与性能分析功能。它把每次函数进入和退出记录到时间线上,并能同时显示对应的源代码,适合排查意外的执行流程,或定位耗时集中的位置。前端查看器基于 Perfetto 构建,可在浏览器中缩放和浏览。
大多数功能无需修改源码:用 viztracer 命令运行脚本即可生成 result.json,再用 vizviewer 打开。也可以在代码中以 with 语句包裹需要追踪的片段。此外还支持 Jupyter 单元格魔法命令、PyTorch 原生调用与 GPU 事件记录,以及对运行中进程的远程附加追踪。
工具覆盖 threading、multiprocessing、subprocess、os.fork、concurrent.futures 和 asyncio 等场景,并提供最小耗时、最大栈深度、文件包含与排除等过滤选项,以控制生成数据的体积。支持 Linux、macOS 和 Windows,可通过 pip 安装。
核心功能
- 01在时间线上记录函数的进入与退出,并显示对应源码。
- 02无需修改代码即可追踪脚本、模块和控制台命令。
- 03支持 threading、multiprocessing、subprocess、asyncio 和 PyTorch。
- 04提供最小耗时、最大栈深度及文件包含/排除等过滤选项。
- 05可远程附加到正在运行的 Python 进程。
- 06支持 Linux、macOS 和 Windows。
适用场景
- 排查多线程或异步 Python 程序中意外的执行流程。
- 定位慢脚本中耗时最多的函数调用。
- 结合 GPU 事件查看 PyTorch 模型的执行情况。
- 通过附加到长时间运行的进程,观察其内部行为。
快速上手
- 1
使用 pip 安装 VizTracer
pip install viztracer - 2
在命令行中追踪你的脚本
viztracer my_script.py arg1 arg2 - 3
用查看器打开生成的 result.json
vizviewer result.json
收录于专题
标签
常见问题
- viztracer 是什么?
- 一款低开销的 Python 追踪工具,将代码执行过程记录并以交互式时间线可视化。 VizTracer 是一款用于追踪和可视化 Python 代码执行过程的工具,兼具日志、调试与性能分析功能。它把每次函数进入和退出记录到时间线上,并能同时显示对应的源代码,适合排查意外的执行流程,或定位耗时集中的位置。前端查看器基于 Perfetto 构建,可在浏览器中缩放和浏览。
- viztracer 可以免费使用吗?用的什么许可证?
- viztracer 以 Apache-2.0 许可证开源。用于商业产品前,请先确认许可证条款。
- viztracer 还在维护吗?
- 半年内有更新。viztracer 最近一次提交是在 2026年9月26日。
- viztracer 适合用来做什么?
- 排查多线程或异步 Python 程序中意外的执行流程。 定位慢脚本中耗时最多的函数调用。 结合 GPU 事件查看 PyTorch 模型的执行情况。 通过附加到长时间运行的进程,观察其内部行为。
- viztracer 怎么安装和运行?
- 使用 pip 安装 VizTracer: pip install viztracer 在命令行中追踪你的脚本: viztracer my_script.py arg1 arg2 用查看器打开生成的 result.json: vizviewer result.json
- 在哪里获取 viztracer?
- 源代码和安装说明在 GitHub 上:https://github.com/gaogaotiantian/viztracer
概要由 AI 根据项目 README 生成;GitHub 数据每日更新。
相关项目
用于可视化和分析 profile.proto 格式性能剖析数据的命令行与 Web 工具。
基于 Rust 的火焰图生成工具,可对 Cargo 项目或任意可执行文件进行性能剖析,无需 Perl。
基于 Intel Processor Trace 的 Linux 性能追踪工具,可记录进程的每一次函数调用并以时间线展示。
面向 Python 的内存分析器,可追踪 Python 代码、原生扩展及解释器自身的内存分配,并生成多种报告。
逐行分析 Python 函数耗时的性能剖析工具,可定位函数中每一行代码的执行时间。