如何在 Python 或 IPython 中仅分析我的代码?

How can I profile only my code in Python or IPython?

我熟悉 IPython 中使用 Python profile 模块的 %prun 魔术命令。但是,我只想分析我的代码。也就是说,我想看看我的 Python 代码中哪些行最慢,而不是隐藏在我正在使用的某些外部包中的那些行,它们经常被调用,因此看起来花费的时间最多。我该怎么做?

根据更多的谷歌搜索,答案似乎是 line_profilerhttps://github.com/rkern/line_profiler

import line_profiler
%load_ext line_profiler

然后

%lprun -f function_i_want_to_profile function_i_want_to_run()

虽然 line_profiler 有效,但它增加了很多开销,您需要将 @profile 放在各处。

您可以用各种方式对 %prun 的输出进行排序。其中之一是模块名称:

%prun -s module my_func()

因此相应地选择您的文件名,例如以下划线开头,会将您的文件放在列表的开头 %prun 显示。