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()
#
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
Frame width represents CPU time per function