首页 > 解决方案 > 如何让 PyC​​harm 分析器只显示我的源代码的时间,而不是任何库?

问题描述

当我运行 PyCharm 分析器时(这里有一个快速介绍视频 - https://www.youtube.com/watch?v=QSueV8MYtlw),我得到了数千行,如 hasattr 或 npyio.py (它是从哪里来的,我知道甚至不使用 numpy) 这根本无法帮助我理解发生了什么。

如何让 PyC​​harm 分析器只显示我的源代码的时间,而不是任何库或系统调用?

换句话说,系统调用和库所花费的时间可以分配给调用它们的函数吗?

换句话说(第二版),我想要的只是的python 代码每行旁边的毫秒数,而不是其他任何东西。

标签: pythonperformanceintellij-ideapycharmprofiler

解决方案


我创建了一个代码来提供一个示例,并希望提供一个可以接受的答案:

import datetime as dt
class something:
    def something_else(self):
        other_list = range(100000)
        for num in other_list:
            datetimeobj = dt.datetime.fromtimestamp(num)
            print(num)
            print(datetimeobj)

    def something_different(self):
        other_list = range(100000)
        for num in other_list:
            datetimeobj = dt.datetime.fromtimestamp(num)
            print(num)
            print(datetimeobj)

st = something()
st.something_else()
st.something_different()

代码生成了下图,我根据名称对其进行了排序。(在我的情况下这是可能的,因为所有内置方法都以“<”为前缀。这样做之后,我现在可以看到 main 占用了总时间的 100%(列:时间(毫秒))。something_else 占用了 50.8% time 和 something_different 花费了 49.2 % 的时间(总计也达到 100 %)(列:时间(毫秒))在两种本土方法中花费的时间分别为 2.0 %(列:自己的时间(毫秒) )) -> 这意味着来自 something_else 的底层调用占 48.8 %,而 something_different 占 47.2 %,我编写的部分占总时间的 4.0 %。其余 96.0 % 的代码来自内置方法,我打电话。

结果

你的问题是:

如何让 PyC​​harm 分析器只显示我的源代码的时间,而不是任何库或系统调用?-> 这就是您在列中看到的:“Own Time (ms)”-> 2.0 %(在特定方法中花费的时间。)

换句话说,系统调用和库所花费的时间可以分配给调用它们的函数吗?-> 这就是您在列中看到的:“时间(毫秒)”(花费的时间包括底层方法。)

减去这两列,您只需要花费在底层方法上的时间。

不幸的是,我无法在分析器中找到过滤方法,但可以通过复制列表来导出列表,这样您就可以创建其他东西来进行过滤,例如“<built_in”以清理数据。


推荐阅读