Python 不计算执行函数的时间

Python doesn't calculate time for executing a function

我正在学习一些 Python 基础知识,我们有关于包装函数以及如何使用它们向包装函数添加功能的代码。所以我们计算用于计算两个不同函数的时间:

    import time


def timer(fn):
    def wrapper():
        t0 = time.time()
        result = fn()
        dt = time.time() - t0
        return dt

    return wrapper


def pow_2():
    return 10000000 ** 2


def in_build_pow():
    return pow(10000000, 2)


pow_2 = timer(pow_2)
in_build_pow = timer(in_build_pow)

a, b = 0, 0
N = 100
for i in range(N):
    a += pow_2()
    b += in_build_pow()

print("a = ", a)
print("b = ", b)
print(f"Average time pow_2 = {a / N:.10f}")
print(f"Average time in_build_pow = {b / N:.10f}")

但我的结果是这样的:

除非我将迭代次数N增加到1000以上。N越高,结果不是0.0的次数就越多。

这是 N = 1000:

这是 N = 10,000:

有谁知道为什么会这样吗?为什么我不能为更少的迭代计算时间?不过,该代码在在线编译器中运行良好。但是 VSCode、VS2022 和 PyCharm 对我来说都有同样的问题。

有些 OS 在使用这些函数计算非常短的时间间隔时遇到问题。所以最好使用时间模块的 perf_counter_ns() 方法。我个人在 Win10 上遇到了问题,而 MacOS 使用 time() 方法工作得很好。