# Python Profiler Visualizer 粘贴一段 Python 代码,一键运行,立刻看到每个函数各花多少时间。桌面应用,不联网,不传你的代码,不配环境。 ## 下载 到 [Releases](../../releases) 下载 `Python Profiler Visualizer Setup x.y.z.exe`,双击安装。首次启动会扫描 Python;找不到可点应用里的「打开终端」按钮,按系统预填命令装即可。 ## 从源码运行 需 Node 20+ 和 Python 3.9+:`npm install` 后 `npm run dev`。 ## 用法 1. 左侧编辑器贴代码(或点工具栏「加载示例」) 2. `Ctrl/Cmd + Enter` 运行 3. 右侧看摘要、热点表、6 种耗时可视化 4. 点热点表任意函数跳到对应行;标准库/第三方包会新开标签页展示源文件 5. 工具栏切换「剖析范围」:仅用户代码 / 含库函数(切换后旧结果会标为陈旧) 按 `← / →` 在柱状图、火焰图、矩形树图、旭日图、累计柱状图、模块热力图之间切换。 ### 快捷键 | 按键 | 作用 | | --- | --- | | `Ctrl/Cmd + Enter` | 运行 / 取消 | | `Esc` | 取消运行 / 关设置面板 | | `← / →` | 切标签页或图表视图 | | `Home` / `End` | 跳到首/尾 | | `Delete` / `Ctrl/Cmd + W` | 关闭当前标签页 | ## 耗时数字说明 cProfile 会拖慢代码 1.5~3 倍。引擎启动时跑同一段 tight-loop 测出裸跑与仪器化倍率,把你的 instrumented 时间除回去,摘要数字接近真实耗时,并标「已校准」。 提醒: - 单次数字有抖动,比较时建议跑多次 - 含 `plt.show()` / `input()` / `cv2.waitKey()` 等阻塞事件循环的等待时,UI 会提示「含交互等待」 ## 限制 - 仅单文件自包含脚本,不支持命令行参数或多文件项目 - 无自动超时(取消靠按钮或 `Esc`),长时间任务跑到自然结束 - 不替代 `py-spy` / `scalene` ## 给开发者 Electron 31 + React 18 + Vite 5 + TypeScript 5,Python 引擎用 cProfile + 标准库。 ```bash npm run dev # 开发 npm run build # 打包 npm run release # 出 Windows 安装包 npm test # 单元测试 npm run test:e2e # E2E python -m pytest engine/tests -v # Python 引擎测试 ``` 架构:`src/main/` 主进程、`src/renderer/` React 前端、`engine/` Python 引擎。跨语言契约 `AnalysisResult`,Python 侧 `engine/schema.py` 是事实源,TypeScript 侧 `src/shared/analysis.ts` 对齐,契约测试 `engine/tests/test_contract.py` 锁版本。 `npm run release` 产物在 `release/Python Profiler Visualizer Setup x.y.z.exe`。未签名,Windows SmartScreen 点「更多信息 → 仍要运行」即可。 ## License MIT