Python timeit问题

Fed*_*ico 6 python timeit

我正在尝试使用timeit模块,但我不知道如何.我有一个主要的:

from Foo import Foo
if __name__ == '__main__':
...
   foo = Foo(arg1, arg2) 
   t = Timer("foo.runAlgorithm()")
   print t.timeit(2)
Run Code Online (Sandbox Code Playgroud)

我的Class Foo有一个名为runAlgorithm()的方法

错误是这样的:

NameError:未定义全局名称'foo'

我究竟做错了什么?我可以从课堂方法中抽出时间吗?

And*_*Dog 16

您可以简单地传递方法(或任何可调用的),而不是使用必要的setup参数来设置timeit环境:

t = Timer(foo.runAlgorithm)
Run Code Online (Sandbox Code Playgroud)

从文档:

版本2.6中已更改:stmt和setup参数现在还可以使用不带参数的可调用对象.

如果需要传递一些参数,可以使用函数currying functools.partial,例如:

class C:
    def printargs(self, a, b):
        print a, b

from functools import partial
foo = C()
t = Timer(partial(foo.printargs, 1, 2))
Run Code Online (Sandbox Code Playgroud)