如何使 PyCharm 分析器仅显示我的源代码的计时,而不显示任何库?

问题描述 投票:0回答:2

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

如何使 PyCharm 分析器仅显示源代码的时间,而不显示任何库或系统调用?

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

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

python performance intellij-idea pycharm profiler
2个回答
2
投票

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

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()

代码生成了下图,我根据名称对其进行了排序。 (在我的例子中这是可能的,因为所有内置方法都以“<". After doing this I can now see that main took 100 % of the total time (Column: Time (ms)). something_else took 50.8 % of the time and something_different took 49.2 % of the time (Totaling to 100 % as well) (Column: Time (ms)) The time spent inside each of the two home-grown methods was 2.0 % for each (Column: Own Time (ms)) ->”为前缀,这意味着来自something_else的底层调用占总时间的48.8%,来自something_ different的47.2%,而我编写的部分占总时间的4.0%。剩余 96.0 % 的代码来自我调用的内置方法。

Result

您的问题是:

如何使 PyCharm 分析器仅显示源代码的时间,而不显示任何库或系统调用? -> 这就是您在列中看到的内容:“自己的时间 (ms)”-> 2.0 %(在特定方法内花费的时间。)

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

减去两列,您将得到仅在底层方法上花费的时间。

不幸的是,我无法在探查器中找到过滤方法,但可以通过复制来导出列表,这样您就可以创建其他东西来进行过滤,例如”

不敢相信已经是 2024 年了,我们仍然没有像 Datagrip 那样的可靠的逐行代码分析器。 SMH


0
投票
© www.soinside.com 2019 - 2024. All rights reserved.