65.9K
CodeProject 正在变化。 阅读更多。
Home

Python 代码分析

emptyStarIconemptyStarIconemptyStarIconemptyStarIconemptyStarIcon

0/5 (0投票)

2018年12月5日

CPOL
viewsIcon

8472

探索 Intel® VTune Amplifier 为 Python 应用程序提供的性能分析选项,以识别最耗时的代码段和关键调用路径。

探索 Intel® VTune™ Amplifier 为 Python* 应用程序提供的性能分析选项,以识别最耗时的代码段和关键调用路径。

Intel® VTune™ Amplifier 支持通过 **启动应用程序** 和 **附加到进程** 模式对 Python* 应用程序进行 **热点**、**线程** 和 **内存消耗** 分析。例如,当您的应用程序进行过多的数值建模时,您需要知道它如何有效地使用可用的 CPU 资源。有效 CPU 使用的一个很好的例子是计算过程将大部分时间花在执行本机扩展而不是解释 Python 粘合代码上。

为了最大限度地提高 Python 应用程序的性能,请考虑使用本机扩展,例如 NumPy,或用 C 甚至汇编等本机语言编写和编译 Python 项目中对性能至关重要的模块。这将帮助您的应用程序利用向量化并充分利用强大的 CPU 资源。

使用 VTune Amplifier 分析 Python 代码性能并解释数据

配置 Python 数据收集

您可以使用 GUI 或命令行 (amplxe-cl) 界面来配置 VTune Amplifier 以分析您的 Python 代码性能。

要从 GUI 配置和运行 Python 代码性能分析,请执行以下操作:

  1. 单击工具栏上的 配置分析 按钮。

    配置分析”窗口打开。

  2. 选择目标系统和目标类型。例如:本地主机启动应用程序

    注意

    仅支持 Windows* 和 Linux* 目标系统。

  3. 启动应用程序配置窗格中,在应用程序字段中指定已安装的 Python 解释器路径,在应用程序参数字段中指定您的 Python 脚本路径。

    注意

    如果您在应用程序参数字段中指定 Python 脚本的相对路径,VTune Amplifier 仅能正确解析导入模块的完整函数或方法名称,而无法解析主脚本中的名称。请考虑指定脚本的绝对路径。

    此外,您可以选择自动托管代码性能分析模式,VTune Amplifier 会自动检测目标可执行文件的类型(托管或本机),并切换到相应的模式。您可以选择分析子进程选项来收集目标进程启动的进程数据。例如,在 Linux 上,您的配置可能如下所示:

    如果您的 Python 应用程序需要在性能分析开始前运行,或者无法在此分析开始时启动,您可以将 VTune Amplifier 附加到 Python 进程。为此,请选择 **附加到进程** 目标类型,并按如下方式指定 Python 进程名称或 PID:

    注意

    当您将 VTune Amplifier 附加到 Python 进程时,请确保在开始分析之前在您的脚本中初始化全局解释器锁 (GIL)。如果 GIL 未初始化,VTune Amplifier 收集器只会在调用新的 Python 函数时初始化它。

  4. 在右侧的 **如何 (HOW)** 配置窗格中,选择 **热点**、**线程** 或 **内存消耗** 分析类型。

  5. 根据需要配置以下选项,或使用默认值

    用户模式采样模式

    选择启用用户模式采样和跟踪收集,用于热点和调用堆栈分析(以前称为基本热点)。此收集模式使用固定的 10 毫秒采样间隔。如果您需要更改间隔,请点击复制按钮并创建自定义分析配置。

    基于硬件事件的采样模式

    选择启用基于硬件事件的采样收集,用于热点分析(以前称为高级热点)。

    您可以为此收集模式配置以下选项:

    • CPU 采样间隔,毫秒用于指定 CPU 采样之间的间隔(以毫秒为单位)。基于硬件事件采样模式的可能值为 0.01-1000。默认使用 1 毫秒

    • 收集堆栈可启用调用堆栈和线程上下文切换的高级收集。

    注意

    更改收集选项时,请注意右侧的 **开销** 图表。它会动态变化以反映所选选项引起的收集开销。

    显示额外性能洞察复选框

    获取额外的性能洞察,例如向量化,并了解下一步操作。此选项会收集额外的 CPU 事件,这可能会启用多路复用模式。

    此选项默认启用。

    详细信息按钮

    展开/折叠一个部分,其中列出了此分析类型使用的默认不可编辑设置。如果您想修改或启用分析的附加设置,您需要通过复制现有预定义配置来创建自定义配置。VTune Amplifier 会创建此分析类型配置的可编辑副本。

  6. 点击开始按钮以运行分析。

识别热点

用户模式采样中的热点分析有助于识别 Python 代码中执行时间较长的部分(热点),以及它们的计时指标和调用堆栈。它还在时间轴窗格中显示线程上的工作负载分布。

默认情况下,VTune Amplifier 使用 **自动** 托管代码性能分析模式,该模式使您能够查看和分析 Python/C++ 应用程序的混合堆栈。在下面的示例中,您可以在左侧窗格中看到本机热点 Intel® 数学核心函数库 (Intel® MKL) 函数。右侧窗格中的混合调用堆栈分析显示了一个 Python `black_scholes` 函数,该函数实际上调用了热点函数。

双击 **调用堆栈** 窗格上的 `black_scholes` 函数,在调用站点第 66 行打开源代码视图。

要仅查看 Python 代码内的调用堆栈,请在筛选栏上选择 **调用堆栈模式** 的 **仅用户函数** 选项,以筛选掉 Python 核心和系统函数。

限制

VTune Amplifier 支持 Python 代码分析,但存在一些限制

  • 仅支持 Python 2.6 及更高版本。
  • 如果您使用将 Python 代码编译成本机语言(JIT、C/C++)的 Python 扩展,VTune Amplifier 可能会显示不正确的分析结果。请考虑使用JIT 分析 API来解决此问题。
  • Python 代码分析仅支持 Windows 和 Linux 目标系统。
  • 在某些情况下,VTune Amplifier 可能无法在 Windows 操作系统上解析 Python 函数和模块的完整名称。它会显示正确的源信息,因此您可以直接从 VTune Amplifier 的视图点查看源。
  • 时间线窗格中并非总是显示正确的线程名称。
  • 如果您的应用程序的堆栈深度非常低,其中包括被调用函数和导入模块,则 VTune Amplifier 不会收集 Python 数据。请考虑使用更深层的调用来启用性能分析。
  • 远程收集数据时,VTune Amplifier 可能无法解析完整的函数或方法名称,也无法显示您的 Python 脚本源代码。为解决 Linux 目标系统的此问题,请在运行分析之前,将源文件复制到主机系统上的一个目录中,该目录的路径与目标系统上的路径相同。

另请参阅

© . All rights reserved.