开发人员指南:生成服务调用图¶
本文档描述了用于生成长期运行的“aura_engine.py”的可视化调用图的稳健、线程安全的方法。我们使用“yappi”分析器(用于多线程支持)和“gprof2dot”进行可视化。
先决条件¶
确保您已在全局或虚拟环境中安装了必要的工具:
代码_块_0
第 1 步:修改分析服务¶
必须修改“aura_engine.py”脚本以手动启动“yappi”分析器并在中断时正常保存分析数据(“Ctrl+C”)。
aura_engine.py 中的主要更改:
导入和信号处理程序: 导入
yappi并定义generate_graph_on_interrupt函数(如之前实现的)以调用yappi.stop()和stats.save(...)。开始/停止: 在
if __name__ == "__main__":块中添加yappi.start()和signal.signal(signal.SIGINT, ...)来包装main(...)的执行。
第 2 步:运行服务并收集数据¶
直接运行修改后的脚本,并允许其处理数据足够的时间(例如 10-20 秒),以确保调用所有核心函数,包括线程函数(如 LanguageTool 校正)。
代码_块_1
按 Ctrl+C 一次即可触发信号处理程序。这将停止分析器并将原始数据保存到:
\mathbf{yappi\_profile\_data.prof
步骤 3:生成和过滤可视化图表¶
我们使用“gprof2dot”将原始“pstats”数据转换为 SVG 格式。由于我们的特定环境可能不支持“–include”和“–threshold”等高级过滤选项,因此我们使用基本的“–strip”过滤器来清理路径信息并减少系统内部的混乱。
执行可视化命令:
代码_块_2
步骤 4:文档(手动裁剪)¶
生成的“yappi_call_graph_stripped.svg”(或“.png”)文件会很大,但它准确地包含完整的执行流程,包括所有线程。
出于文档目的,手动裁剪图像以重点关注中央逻辑(10-20 个核心节点及其连接),从而为存储库文档创建重点突出且可读的调用图。
归档¶
修改后的配置文件和最终的调用图可视化应存档在文档源目录中:
神器 |
地点 |
|---|---|
修改后的服务文件 |
|
最终裁剪图像 |
|
原始分析数据 |
(可选:应从最终存储库文档中排除) |
