Timeit没有返回实际时间

时间:2016-03-04 16:39:20

标签: python-3.x time timeit

我正在使用timeit模块测试Heap的实现,但是我无法在float中打印时间:

def testCustomHeapStartUp(*args):
    h = MinHeap(args[0])
    return True

if __name__ == "__main__":
    for i in range(3):
        testList = random.sample(range(100), 100)
        print(timeit.Timer("testCustomHeapStartUp(testList)", \
            "from __main__ import testCustomHeapStartUp; from __main__ import testList; gc.enabled()"))

这是输出:

<timeit.Timer object at 0x101a58978>
<timeit.Timer object at 0x101a58978>
<timeit.Timer object at 0x101a58978>

1 个答案:

答案 0 :(得分:0)

timeit.Timer(...)仅创建实例,它不会运行并为代码计时。

您需要调用.timeit()实例上的Timer函数:

print(timeit.Timer(..., ...).timeit(n))

n是您希望timeit()运行代码段的次数。

由于timeit经常出现,我会将您的代码重构为:

from timeit import Timer

def testCustomHeapStartUp(*args):
    h = MinHeap(args[0])
    return True

if __name__ == "__main__":
    for i in range(3):
        testList = random.sample(range(100), 100)
        t = Timer(
            "testCustomHeapStartUp(testList)",
            "from __main__ import testCustomHeapStartUp; from __main__ import testList; gc.enabled()",
            )
        print(t.timeit())
相关问题