perfy

Perfy - a lightweight performance tracer for python


Keywords
profiling, trace, runtime, analysis, performance, performance-analysis, python
License
MIT
Install
pip install perfy==0.27

Documentation

perfy

Perfy - a lightweight profiling tool for Python

Mark your functions and methods as trace-enabled with @perfy decorator:

@perfy
def trace_this_function():
   # do something

Also, you can trace arbitrary blocks of your code using with statement:

with perfy('name of your choice'):
   # your code here

After running your code, print report using

perfy.report()

Example:

from time import sleep
from perfy import perfy

@perfy # <-- use decorator to track function calls
def func_sleep():
   sleep(.02)
    

def sleep_loop():
   with perfy('sleep loop'): # <-- use with-statement to track arbitrary block of code
      for _ in range(10):
         func_sleep()

# you can nest with-blocks and decorated function calls in any order:
@perfy # <-- a decorator on a top level function
def main():
   sleep_loop() # <-- this functions has a traced block inside

   with perfy('custom named block'): # <-- traced block
      sleep(.1)

      with perfy('inner block'): # <-- nested traced block
         func_sleep()
         func_sleep() 

For above code perfy.report() will output:

----------------------------------Perfy report----------------------------------
            Function/Method                  Time(sec.)         Calls(count)    
--------------------------------------------------------------------------------
main                                           0.350                 1          
   â”” sleep loop                                0.206                 1          
      â”” func_sleep                             0.205                 10         
   â”” custom named block                        0.144                 1          
      â”” inner block                            0.043                 1          
         â”” func_sleep                          0.042                 2          
--------------------------------------------------------------------------------