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

代码如下:

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()方法在timeit范围内可用。

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

有人可以帮忙吗?
谢谢。

最佳答案

我有一个字面上是这样的文件:

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中运行此程序吗?在Python 2.7和3.2下,都可以从命令行和IDLE使用它。

关于python - 在timeit()中从同一模块调用方法时导入错误,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12404487/

10-10 23:58