Skip to main content

A library to analyse how slow your code is. This is a quick way to validate what is slow in your code.

Project description

sloth-cli

logo

A library to speed the profile (cProfile) analyses of code performance on a per line basis. This library allow the user to call a python script file with arguments and analyse what lines of code are taking longer to process.

An example output of the sloth-cli:

Sat Jun  8 11:56:40 2019    profileOutput.profile

         5400 function calls (5340 primitive calls) in 3.017 seconds

   Ordered by: cumulative time
   List reduced from 352 to 100 due to restriction <100>

   ncalls  tottime  percall  cumtime  percall filename:lineno(function)
      4/1    0.000    0.000    3.017    3.017 {built-in method builtins.exec}
        1    0.000    0.000    3.017    3.017 tester.py:1(<module>)
        1    0.000    0.000    3.014    3.014 tester.py:21(run)
        3    3.012    1.004    3.012    1.004 {built-in method time.sleep}

Install

pip install sloth-cli

Decorator Usage

The sloth.profile allows you to gather the profile data by adding it as a decorator. The decorator can be enabled or disabled whenever needed. It can also be turned on by setting the environment variable SLOTH_PROFILE to True (SLOTH_PROFILE='True') so you can set add it to your code and leave it; then just turn it on when you need to validate the code performance.

To use the decorator do the following

import time

from sloth_cli import profile


def _loop_sleep():
    """Loops and sleeps"""
    for i in range(3):
        print(i)
        time.sleep(1)


def _loop():
    """Loops 1000 times"""
    ints = []
    for i in range(1000):
        ints.append(i)


@profile(enable=True, lines=50, builtins=False)
def run():
    """Run loops"""
    _loop()
    _loop()
    _loop_sleep()


if __name__ == '__main__':
    run()
         10 function calls in 3.006 seconds

   Ordered by: cumulative time

   ncalls  tottime  percall  cumtime  percall filename:lineno(function)
        1    0.000    0.000    3.006    3.006 test_profiler.py:20(run)
        1    3.005    3.005    3.005    3.005 test_profiler.py:6(_loop_sleep)
        6    0.000    0.000    0.000    0.000 capture.py:413(write)
        2    0.000    0.000    0.000    0.000 test_profiler.py:13(_loop)

CLI Usage

Using a tester.py cli script (argsparse):

To run tester.py with arguments:

sloth -f tester.py --cmd fake --fake-arg test

To get the tester.py help:

sloth -f tester.py -l 100 --cmd --help

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

sloth-cli-1.1.1.tar.gz (5.1 kB view hashes)

Uploaded Source

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