Python
#
Supported platformsLinux | macOS | Windows | Docker |
---|---|---|---|
✅ | ✅ | ✅ |
#
Profiling Python applicationsFirst, install pyroscope-io
pip package:
pip install pyroscope-io
#
Minimal ConfigurationAdd the following code to your application. This code will initialize pyroscope profiler and start profiling:
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)
#
Full ConfigurationOptionally, you can configure several parameters:
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 auth_token = "{YOUR_API_KEY}", # optional, if authentication is enabled, specify the API key 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 native = False, # profile native extensions; default is False gil_only = True, # only include traces for threads that are holding on to the Global Interpreter Lock; default is True log_level = "info", # default is info, possible values: trace, debug, info, warn, error and critical tags = { "region": '{os.getenv("REGION")}', })
#
TagsYou can add tags to certain parts of your code:
# You can use a wrapper:with pyroscope.tag_wrapper({ "controller": "slow_controller_i_want_to_profile" }): slow_code()
#
Sending data to Phlare with Pyroscope Python integrationStarting with weekly-f8 you can ingest pyroscope profiles directly to phlare.
import pyroscope
pyroscope.configure( application_name = "phlare.python.app", server_address = "<URL>", basic_auth_username='<User>', basic_auth_password='<Password>', tenant_id="<TenantID>",)
To configure Python integration to send data to Phlare, replace the <URL>
placeholder with the appropriate server URL. This could be the grafana.com Phlare URL or your own custom Phlare server URL.
If you need to send data to grafana.com, you'll have to configure HTTP Basic authentication. Replace <User>
with your grafana.com stack user and <Password>
with your grafana.com API key.
If your Phlare server has multi-tenancy enabled, you'll need to configure a tenant ID. Replace <TenantID>
with your Phlare tenant ID.
#
Python profiling examplesCheck out the following resources to learn more about Python profiling:
- Python examples
- Python Demo showing Python example with tags
- Python blog post