繁体   English   中英

如何在Python中自动测量函数的执行时间

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

我需要有一个基类 ,我将用它来继承其他类,我想测量其函数的执行时间。

因此, 这一翻译有像这样

class Worker():
    def doSomething(self):
        start = time.time()
        ... do something
        elapsed = (time.time() - start)
        print "doSomething() took ", elapsed, " time to finish"

#outputs: doSomething() took XX time to finish

我想要这样的东西:

class Worker(BaseClass):
    def doSomething(self):
        ... do something

#outputs the same: doSomething() took XX time to finish

所以BaseClass需要处理测量时间

一种方法是使用装饰器装饰器的PEP) (关于装饰器的一系列教程文章中的第一篇) 这是一个做你想要的例子。

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

这是其使用的一个例子

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

为了说明它是如何工作的,我从python提示符调用了该函数:

>>> 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'

你检查了“配置文件”模块吗?

即,您确定需要实现自己的自定义框架,而不是使用该语言的默认分析机制吗?

您也可以谷歌为“python hotshot”获得类似的解决方案。

还有timeit ,它是标准库的一部分,并且非常易于使用。 记住:不要重新发明轮子!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM