Timeit 不返回实际时间

Timeit not returning actual time

我正在使用 timeit 模块测试堆的实现,但我无法让它以浮点形式打印时间:

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>

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

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

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())