在timeit()中从同一模块调用方法时导入错误

时间:2012-09-13 10:44:52

标签: python timeit

我想使用 getExecutionTime()方法测量Python方法 sayHello()的执行时间。它们都在一个模块中, getExecutionTime() -method应该可以从外部调用。

代码如下所示:

def getExecutionTime():
    t = timeit.Timer("sayHello", "from __main__ import sayHello")
    return t.timeit(2)

def sayHello():
    print("Hello")

我一直得到一个ImportError说:“无法在文件中导入名称sayHello ...”

我将范围参数("from __main__ import sayHello")添加到Timer构造函数中,以使 sayHello()方法在时间范围内可用。

注意:我不想在此方法的主要部分调用getExecutionTime(),我想从其他地方调用该方法。

有人可以帮忙吗? 感谢。

2 个答案:

答案 0 :(得分:2)

我有一个字面意思的文件:

import timeit

def getExecutionTime():
    t = timeit.Timer("sayHello()", "from __main__ import sayHello")
    return t.timeit(2)

def sayHello():
    print("Hello")

print(getExecutionTime())

运行时,它会打印Hello两次,然后执行时间。 (另请注意sayHello()设置中sayHello而不是Timer

您是否在IDE中运行此操作?从命令行& IDLE它适用于我,在Python 2.7& 3.2。

答案 1 :(得分:-2)

代码,因为它是编写的,并且导入了timeit,对我来说也很好,没有ImportError ......