I want to profile my Python code. I am well-aware of cProfile, and I use it, but it’s too low-level. (For example, there isn’t even a straightforward way to catch the return value from the function you’re profiling.)
One of the things I would like to do: I want to take a function in my program and set it to be profiled on the fly while running the program.
For example, let’s say I have a function heavy_func in my program. I want to start the program and have the heavy_func function not profile itself. But sometime during the runtime of my program, I want to change heavy_func to profile itself while it’s running. (If you’re wondering how I can manipulate stuff while the program is running: I can do it either from the debug probe or from the shell that’s integrated into my GUI app.)
Is there a module already written which does stuff like this? I can write it myself but I just wanted to ask before so I won’t be reinventing the wheel.
I wrote my own module for it. I called it
cute_profile. Here is the code. Here are the tests.Here is the blog post explaining how to use it.
It’s part of GarlicSim, so if you want to use it you can install
garlicsimand dofrom garlicsim.general_misc import cute_profile.If you want to use it on Python 3 code, just install the Python 3 fork of
garlicsim.Here’s an outdated excerpt from the code: