衡量运行时最佳实践Python

问题描述

我对评估算法的复杂性还很陌生,我的任务是测量一些功能的实际运行时间。

我一直在使用time.process_time()。这是最好的方法吗?

  • 准确吗?
  • 运行时间是否会根据笔记本电脑的“繁忙”程度而有所不同? (例如,我还有其他应用程序正在打开)
  • 还有其他更好的方法吗?

解决方法

选项1:分析代码以了解实际场景中的整体性能

这是确定在现实情况下运行功能的影响的好方法。

要了解有关代码性能的更多信息,可以使用Profiling

运行以下命令评估功能性能:

import cProfile
cProfile.run('function()')

这为您提供了有价值的信息,例如;总调用数,累积时间,每个函数调用的时间以及每个函数的调用数。

选项2:调查特殊功能调用持续时间

这是了解函数运行时间的绝佳方法。

使用decorator

from functools import wraps
from time import time

def timing(f):
    @wraps(f)
    def wrap(*args,**kw):
        ts = time()
        result = f(*args,**kw)
        te = time()
        print 'func:%r args:[%r,%r] took: %2.4f sec' % \
          (f.__name__,args,kw,te-ts)
        return result
    return wrap

像这样使用它:

@timing
def function():
    <code>