How do I time script execution time in PyCharm without adding code every time?

Question:

Currently I just add the following lines around my code:

import time
start_time = time.time()

# my code here

print "time elapsed: {:.2f}s".format(time.time() - start_time)

Is it possible to achieve the same without adding code to every script I want to time? Either adding something in run configuration or using a plugin?

Asked By: KarolisR

||

Answers:

You can profile your script by hitting the ‘profile’ button (it is to the right of the ‘run’, ‘debug’, and ‘run with coverage’ buttons):

Profile button

Among the output, you will find the name of the script itself, and the time needed to run it.

Note: the function is available in PyCharm PROFESSIONAL 2017.1 for the Linux platform; other installations might not provide the profiler button.

Answered By: lev

I know it is late but I wanted the same thing and here is what I did:

Create another python file in the directory of your codes:

import time
st=time.time()
import test
print("----%.2f----"%(time.time()-st))

where test is your program name.
So if you want to run any program just run it from here by just changing test.

Keep in mind that import runs the code normally if you haven’t used:

if __name__=="__main__":
Answered By: Vedant Kandoi

Just write corresponding unit test (works with community edition).

from unittest import TestCase

from yourscript import yourcode

class TestSol(TestCase):
    def benchmark(self):
        res = yourcode('banana')
        self.assertEqual(res, 77)

PyCharm neatly displays time taken for each test.

Another solution would be to wrap the interpreter with time.
But since it will help in other ways, I recommend taking the unit-tests road.

Answered By: YvesgereY

Since not everyone has PyCharm Pro which can measure script’s running time, here is a simple solution that uses decorator. We only need to add a single line of code to measure the running time of any function as follows:

import time

def timeit(func):
    """
    Decorator for measuring function's running time.
    """
    def measure_time(*args, **kw):
        start_time = time.time()
        result = func(*args, **kw)
        print("Processing time of %s(): %.2f seconds."
              % (func.__qualname__, time.time() - start_time))
        return result

    return measure_time

@timeit
def func():
    for _ in range(3):
        time.sleep(1)

if __name__ == "__main__":
    func()

Output:

Processing time of func(): 3.00 seconds.
Answered By: Vinh Khuc

You can use this command while using IPython / Jupyter notebook

Command can be added to first line in the cell to get CPU and wall time required to execute the cell

%%time
# code

An alternative to this is (timeit – it will run cell multiple times to get average and standard deviation of computational time)

%%timeit
# code
Answered By: Atharv Savarkar
Categories: questions Tags: ,
Answers are sorted by their score. The answer accepted by the question owner as the best is marked with
at the top-right corner.