python - 生成时序统计/分析 Python 解释器
问题描述
首先,之前在这个网站上已经提出了几个类似的问题,特别是这里和这里。前者是 11 岁,后者是 4 岁,参考 11 岁的帖子作为解决方案。我很想知道是否有更新的东西可以完成这项任务。此外,这些问题只对口译员花费的总时间感兴趣。如果存在这样的事情,我希望有比这更细化的东西。
问题:我有一个用 C 编写的 GTK 程序,它生成一个 matplotlib Python 进程,并使用 GtkSocket 和 GtkPlug 将它嵌入到 GTK 程序中的一个小部件中。使用 g_spawn (GLib) 生成 python 进程,然后在创建后将绘图插入 Python 端的套接字。这样做需要三秒钟,在此期间 GtkSocket 小部件是透明的。这在美学上不是很令人愉快,我想看看是否可以做些什么来减少这三秒的等待时间。我查看了使用 PyPy 而不是 CPython 作为解释器,但我不确定PyPy 是否支持 matplotlib,并且由于我使用 PyInstaller 将脚本冻结为可执行文件,因此该路线可能会引起进一步的头痛。我从头到尾对脚本本身进行了计时,时间约为 0.25 秒。我可以从终端(正常或冻结)运行绘图脚本,并且绘图需要相同的时间(约 3 秒),所以它不能是 g_spawn()。时间必须全部花在口译员身上。
我创建了一个重现该问题的最小示例(尽管不那么极端,情节出现在套接字中的时间仅为一秒)。我现在不打算发布它,因为它不一定相关,尽管如果需要,我可以稍后添加文件内容并进行编辑(包含使用 GTK 的 GUI C 代码、XML Glade 文件和 Python 脚本)。
最小示例需要一秒钟而我的实际绘图需要三秒钟这一事实并不令人意外(并进一步证实时间问题是与解释器一起花费的时间),因为它更复杂并且涉及更多导入。
问题:是否存在任何实用程序可以让我分析 Python 解释器在我的脚本中花费的时间?大部分时间花在进口上吗?是在别处吗?如果我能看到解释器大部分时间花在哪里,那可能会让我将这三秒钟的等待时间减少到不那么令人震惊的时间。
任何援助将不胜感激。
解决方案
推荐阅读
- azure-devops - 获取 Azure DevOps Pipeline Artifact 输出 Windows 应用程序
- c++ - 具有依赖字段的结构的聚合初始化
- javascript - 如何通过增加输入数字来动态更改价格
- ios - 应用内购买服务器验证是强制性的吗?
- python - Python - 解码的 unicode 字符串不会保持解码状态
- html - Ruby on Rails 我想在按下“submit_tag”时在另一个选项卡上输出“file_field_tag”选择的 csv 文件的内容
- docker - docker-compose 问题:尝试创建/挂载卷时权限被拒绝
- c++ - 在递归函数中使用字符串的 size() 函数会导致较大的延迟/复杂性吗?
- python - 获取 mysql DB 列以列出
- python - 为什么 Matplotlib+Basemap 不显示岛屿?