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

前端 未结 3 444
无人共我
无人共我 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: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'
    

提交回复
热议问题