菜单
开源

Python

Python 剖析器与 Pyroscope 集成后,改变了分析和优化 Python 应用程序的方式。这种组合为您的 Python 代码库提供了无与伦比的实时洞察力,可以精确识别性能问题。对于专注于提高代码效率和应用程序速度的 Python 开发人员来说,这是一个必不可少的工具。

注意

有关每种语言支持的剖析类型列表,请参阅 可用剖析类型

开始之前

要捕获和分析剖析数据,您需要一个托管的 Pyroscope OSS 服务器或一个托管的 具有 Grafana Cloud 剖析的 Pyroscope 实例(需要免费的 Grafana Cloud 帐户)。

Pyroscope 服务器可以是用于开发的本地服务器,也可以是用于生产环境的远程服务器。

向您的应用程序添加 Python 剖析

安装 pyroscope-io pip 包

bash
pip install pyroscope-io

配置 Python 客户端

将以下代码添加到您的应用程序中。此代码将初始化 Pyroscope 剖析器并启动剖析

python
import pyroscope

pyroscope.configure(
  application_name = "my.python.app", # replace this with some name for your application
  server_address   = "http://my-pyroscope-server:4040", # replace this with the address of your Pyroscope server
)

您可以选择配置几个其他参数

python
import pyroscope

pyroscope.configure(
    application_name    = "my.python.app", # replace this with some name for your application
    server_address      = "http://my-pyroscope-server:4040", # replace this with the address of your Pyroscope server
    sample_rate         = 100, # default is 100
    detect_subprocesses = False, # detect subprocesses started by the main process; default is False
    oncpu               = True, # report cpu time only; default is True
    gil_only            = True, # only include traces for threads that are holding on to the Global Interpreter Lock; default is True
    enable_logging      = True, # does enable logging facility; default is False
    tags                = {
        "region": '{os.getenv("REGION")}',
    }
)

向 Python 应用程序添加剖析标签

您可以向代码的某些部分添加标签

python
# You can use a wrapper:
with pyroscope.tag_wrapper({ "controller": "slow_controller_i_want_to_profile" }):
    slow_code()

使用 Python SDK 将数据发送到 Pyroscope OSS 或 Grafana Cloud 剖析

python
import pyroscope

pyroscope.configure(
    application_name = "example.python.app",
    server_address = "<URL>",
    basic_auth_username = '<User>',
    basic_auth_password = '<Password>',
    # Optional Pyroscope tenant ID (only needed if using multi-tenancy). Not needed for Grafana Cloud.
    # tenant_id = "<TenantID>",
)

要配置 Python SDK 以将数据发送到 Pyroscope,请用相应的服务器 URL 替换 <URL> 占位符。这可能是 Grafana Cloud URL 或您自己的自定义 Pyroscope 服务器 URL。

如果您需要将数据发送到 Grafana Cloud,则必须配置 HTTP 基本身份验证。用您的 Grafana Cloud 堆栈用户替换 <User>,用您的 Grafana Cloud API 密钥替换 <Password>

如果您的 Pyroscope 服务器启用了多租户功能,则需要配置租户 ID。用您的 Pyroscope 租户 ID 替换 <TenantID>

Python 剖析示例

查看以下资源,了解更多关于 Python 性能分析的信息。