首页 > 解决方案 > 生成时序统计/分析 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 解释器在我的脚本中花费的时间?大部分时间花在进口上吗?是在别处吗?如果我能看到解释器大部分时间花在哪里,那可能会让我将这三秒钟的等待时间减少到不那么令人震惊的时间。

任何援助将不胜感激。

标签: pythonprofilinginterpreter

解决方案


推荐阅读