Skip to main content

Quickly profile your code with a single line of code.

Project description

get-profile

A simple library to inject the most profiling bang-for-buck into a single line of code (decorator).

I.E.

import time

from get_profile import get_profile


def your_function_a():
    time.sleep(1)

def your_function_b():
    time.sleep(2)


@get_profile
def your_program():
    your_function_a()
    your_function_b()


if __name__ == '__main__':
    your_program()

Would print something like this after your program has run:

Profiling results for "your_program":

===============================================================================================================================
| func                      | ncalls | tottime -r | percall -r | tottime | percall | callees                                  |
===============================================================================================================================
| CALLABLE: your_program    | 1      | 3.0073     | 3.0073     | 0.0003  | 0.0     | CALLABLE: your_function_a                |
| LINENO: 13                |        |            |            |         |         | LINENO: 6                                |
| FILE: /Users/sonnygeorge/ |        |            |            |         |         | FILE: /Users/sonnygeorge/get-profile/exa |
| get-profile/example.py    |        |            |            |         |         | mple.py                                  |
|                           |        |            |            |         |         |                                          |
|                           |        |            |            |         |         | CALLABLE: your_function_b                |
|                           |        |            |            |         |         | LINENO: 9                                |
|                           |        |            |            |         |         | FILE: /Users/sonnygeorge/get-profile/exa |
|                           |        |            |            |         |         | mple.py                                  |
-------------------------------------------------------------------------------------------------------------------------------
| <built-in method time.sle | 2      | 3.007      | 1.5035     | 3.007   | 2.0     |                                          |
| ep>                       |        |            |            |         |         |                                          |
-------------------------------------------------------------------------------------------------------------------------------
| CALLABLE: your_function_b | 1      | 2.002      | 2.002      | 0.0     | 0.0     | <built-in method time.sleep>             |
| LINENO: 9                 |        |            |            |         |         |                                          |
| FILE: /Users/sonnygeorge/ |        |            |            |         |         |                                          |
| get-profile/example.py    |        |            |            |         |         |                                          |
-------------------------------------------------------------------------------------------------------------------------------
| CALLABLE: your_function_a | 1      | 1.005      | 1.005      | 0.0     | 0.0     | <built-in method time.sleep>             |
| LINENO: 6                 |        |            |            |         |         |                                          |
| FILE: /Users/sonnygeorge/ |        |            |            |         |         |                                          |
| get-profile/example.py    |        |            |            |         |         |                                          |
-------------------------------------------------------------------------------------------------------------------------------

Installation

get-profile can be installed with pip:

$ pip install get-profile

Decorator Parameters

Release 0.0.2 supports the following parameters for the get_profile decorator:

get_profile(

# topn limits the table to only the top n rows
top_n: int = 10,

# only_my_functions = True will filter out functions whose 
# "func" field contains the regex pattern: 
# r"/python[0-9]+\.[0-9]+/|<.*>",
# (a hacky way to limit the output to just your own functions)
only_my_functions: bool = False,  

# sort_by is the column you would like to sort by (descending)
sort_by: str = "tottime -r",

# min_col is the column you would like to filter by (min_val)
min_col: str = "tottime -r",

# min_val is the minimum value for the min_col
min_val: float = 0.005,

# output_width is the width in chars of the output table
output_width: int = 150,

# toggles whether or not the "calees" column is printed
callees: bool = True,

)

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

get-profile-0.0.2.tar.gz (5.5 kB view details)

Uploaded Source

Built Distribution

get_profile-0.0.2-py3-none-any.whl (6.1 kB view details)

Uploaded Python 3

File details

Details for the file get-profile-0.0.2.tar.gz.

File metadata

  • Download URL: get-profile-0.0.2.tar.gz
  • Upload date:
  • Size: 5.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.10.5

File hashes

Hashes for get-profile-0.0.2.tar.gz
Algorithm Hash digest
SHA256 0c0eb7d88cca359d97c269d4e4249efb48d64621af81064f6bef3d832da18b6a
MD5 610c5aa9f0d307e4c9efdf3d1ead8f2b
BLAKE2b-256 0c8be931e6f4e367731f818ef155055f0ba5a4d46d25c42fd5e390dbc000ec77

See more details on using hashes here.

File details

Details for the file get_profile-0.0.2-py3-none-any.whl.

File metadata

  • Download URL: get_profile-0.0.2-py3-none-any.whl
  • Upload date:
  • Size: 6.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.10.5

File hashes

Hashes for get_profile-0.0.2-py3-none-any.whl
Algorithm Hash digest
SHA256 2f45e1871ef92e60d02672b6143053e70654d04e67b733adb9b5e580f41711f9
MD5 42b7b66f2b18c2a08bde26d7732dfff3
BLAKE2b-256 126936525bc922abc0514b699a2f5154ee7fc198c9f5ac35a473bad19eee7d79

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page