Python时间问题

Python时间问题,python,timeit,Python,Timeit,我正在尝试使用timeit模块,但我不知道如何使用。 我有一个主要问题: from Foo import Foo if __name__ == '__main__': ... foo = Foo(arg1, arg2) t = Timer("foo.runAlgorithm()") print t.timeit(2) 我的类Foo有一个名为runAlgorithm()的方法 错误是: NameError:未定义全局名称“foo” 我做错了什么? 我可以从类方法中抽出时间吗?

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

from Foo import Foo
if __name__ == '__main__':
...
   foo = Foo(arg1, arg2) 
   t = Timer("foo.runAlgorithm()")
   print t.timeit(2)
我的类Foo有一个名为runAlgorithm()的方法

错误是:

NameError:未定义全局名称“foo”

我做错了什么? 我可以从类方法中抽出时间吗?

如图所示,您需要传递
设置
语句:

t = Timer("foo.runAlgorithm()", 'from __main__ import foo')

您无需使用设置timeit环境所需的方法,只需传递该方法(或任何可调用的方法):

从文件中:

在版本2.6中更改:stmt和setup参数现在也可以接受无参数可调用的对象

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

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

from functools import partial
foo = C()
t = Timer(partial(foo.printargs, 1, 2))

我认为不带参数需要高亮显示。如果需要传递参数,只需使用一个小包装器函数即可。@SilentGhost:已编辑以包含带参数的示例。
class C:
    def printargs(self, a, b):
        print a, b

from functools import partial
foo = C()
t = Timer(partial(foo.printargs, 1, 2))