how to measure execution time of functions (automatically) in Python

前端 未结 3 436
无人共我
无人共我 2020-12-13 10:00

I need to have a base class which I will use to inherit other classes which I would like to measure execution time of its functions.

So intead of

相关标签:
3条回答
  • 2020-12-13 10:26

    There is also timeit, which is part of the standard library, and is really easy to use. Remember: don't reinvent the wheel!

    0 讨论(0)
  • 2020-12-13 10:27

    One way to do this would be with a decorator (PEP for decorators) (first of a series of tutorial articles on decorators). Here's an example that does what you want.

    from functools import wraps
    from time import time
    
    def timed(f):
      @wraps(f)
      def wrapper(*args, **kwds):
        start = time()
        result = f(*args, **kwds)
        elapsed = time() - start
        print "%s took %d time to finish" % (f.__name__, elapsed)
        return result
      return wrapper
    

    This is an example of its use

    @timed
    def somefunction(countto):
      for i in xrange(countto):
        pass
      return "Done"
    

    To show how it works I called the function from the python prompt:

    >>> timedec.somefunction(10000000)
    somefunction took 0 time to finish
    'Done'
    >>> timedec.somefunction(100000000)
    somefunction took 2 time to finish
    'Done'
    >>> timedec.somefunction(1000000000)
    somefunction took 22 time to finish
    'Done'
    
    0 讨论(0)
  • 2020-12-13 10:36

    Have you checked the "profile" module?

    I.e. are you sure you need to implement your own custom framework instead of using the default profiling mechanism for the language?

    You could also google for "python hotshot" for a similar solution.

    0 讨论(0)
提交回复
热议问题