No project description provided
Project description
perfetto_extras
基于 Perfetto 的 Python 工具包,提供 trace 事件生成与浏览器可视化能力。
特性
- trace_events:便捷生成符合 Perfetto 规范的 trace 事件,可自定义进程、线程、事件类型等。
- 批量事件接口:支持批量添加 counter、instant、complete 等多种 trace 事件,适合大规模数据写入。instant/complete 批量接口支持为每个事件单独指定 name。
- opentrace:一键在浏览器中打开本地 trace 文件,自动本地 HTTP 服务并跳转至 ui.perfetto.dev。
- 命令行工具:安装后可直接使用
opentrace命令,无需再写 python 脚本。 - 完善的文档提示:所有对外 API 均已添加标准 docstring,支持 IDE 悬停查看参数和说明。
当前版本
0.3.0
安装
pip install perfetto_extras
或使用 poetry:
poetry add perfetto_extras
快速开始
1. 生成 Trace 事件
from perfetto_extras import trace_events
# 创建 Trace 对象
t = trace_events.Trace()
# 创建进程轨迹
track = t.create_process_track("MyProcess", "category")
# 添加线程轨迹
thread = track.create_thread_track("MainThread", "category")
# 添加事件
thread.add_complete_event("event1", ts=0, duration_us=1000, args={"foo": 1})
# 导出为 JSON
with open("my_trace.json", "w") as f:
f.write(t.dumps(indent=2, ensure_ascii=False))
2. 批量添加 Trace 事件(推荐)
from perfetto_extras import trace_events
t = trace_events.Trace()
# 批量添加 counter 事件
t.add_batch_counter_events(
process_name="CounterDemo",
category="Counter",
name_prefix="Counter",
timestamps=[1000, 2000, 3000],
values_list=[
{"cat": 2, "dog": 4},
{"cat": 3, "dog": 5},
{"cat": 4, "dog": 6}
]
)
# 批量添加 instant 事件(支持 names 参数)
t.add_batch_instant_events(
process_name="InstantDemo",
process_category="InstantCat",
thread_name="Thread-1",
thread_category="ThreadCat",
timestamps=[1100, 2100, 3100],
args_list=[
{"event": "A"},
{"event": "B"},
{"event": "C"}
],
names=["eventA", "eventB", "eventC"] # 可为每个事件单独指定 name
)
# 批量添加 complete 事件(支持 names 参数)
t.add_batch_complete_events(
process_name="CompleteDemo",
process_category="CompleteCat",
thread_name="Thread-2",
thread_category="ThreadCat",
timestamps=[1200, 2200, 3200],
durations=[50, 60, 70],
args_list=[
{"task": "X"},
{"task": "Y"},
{"task": "Z"}
],
names=["taskX", "taskY", "taskZ"] # 可为每个事件单独指定 name
)
with open("batch_trace.json", "w") as f:
f.write(t.dumps(indent=2, ensure_ascii=False))
3. 浏览器可视化 Trace 文件
方式一:直接用命令行工具(推荐)
opentrace my_trace.json
方式二:用 python -m 方式
python -m perfetto_extras.opentrace my_trace.json
命令会自动打开浏览器并加载本地 trace 文件到 Perfetto UI。
目录结构
perfetto_extras/
trace_events.py # Trace 事件生成核心模块
opentrace.py # 浏览器可视化工具
pyproject.toml # 项目配置与依赖
README.md # 使用说明
依赖
- Python >= 3.11
- protobuf == 5.29.3
- click >= 8.2.1, <9.0.0
贡献
欢迎提交 issue 和 PR!
- Fork 本仓库
- 新建分支
- 提交修改
- 发起 Pull Request
License
MIT
温馨提示:
- 如果你的包有更多功能、API 或命令行参数,请在 README 里详细补充示例和说明。
- 如果有徽章(如 PyPI 版本、CI 状态),可以加在最上面。
如需根据你的实际 API 或功能进一步定制,请把主要功能点或代码片段发给我,我可以帮你写得更详细!
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
perfetto_extras-0.3.4.tar.gz
(10.0 kB
view details)
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file perfetto_extras-0.3.4.tar.gz.
File metadata
- Download URL: perfetto_extras-0.3.4.tar.gz
- Upload date:
- Size: 10.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/2.1.3 CPython/3.13.5 Darwin/24.5.0
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
776d15507ab76eedb607172393f2085418d061895798587e9a21b4fda54102c3
|
|
| MD5 |
b0dcaa3ebfbd136f0eabe815b8d032ce
|
|
| BLAKE2b-256 |
4c0f964ffbe84006fe9bb638c940a31a3f4259a552a7e5b4676b487840e21ab5
|
File details
Details for the file perfetto_extras-0.3.4-py3-none-any.whl.
File metadata
- Download URL: perfetto_extras-0.3.4-py3-none-any.whl
- Upload date:
- Size: 10.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/2.1.3 CPython/3.13.5 Darwin/24.5.0
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
43ccda64eebffaff4d79815eff8624425398283fecb4ae890c7e66e2424ea73b
|
|
| MD5 |
e064ab09f2a1b47fed27d6e07e212677
|
|
| BLAKE2b-256 |
dfde7bb20f8b06accab81bcf9974fc8cc9fbef06d4ae6d6d4e0f679ff0e99414
|