Python中函数间使用time.time()的问题

0 投票
1 回答
67 浏览
提问于 2025-04-12 21:58

我在Ubuntu上用Python 3.10.12运行这个程序。我需要测量一个概率函数的运行时间。这是代码。

def likelihood(x, fun):
    if fun == 0:
        rosenbrock(x)
    else:
        rosenbrock_simplified(x)


def rosenbrock(x):
    for i in range(3000):
        # some calculation
    return logl

def time_evaluation():
   
    x = np.random.normal(size=2)
    start = time.time()
    value = likelihood(x, 0)
    stop = time.time()

    return stop - start

运行这段代码时,我得到的时间值很小。如果我把测量时间的代码放在rosenbrock函数内部,得到的时间值就会高一些。难道time.time()只测量了调用概率函数所需的时间吗?

正如我之前提到的,我注意到把time.time()放到rosenbrock函数内部后,时间值有了明显的差异。

1 个回答

0

这些时间差可能是因为你运行代码的时间很短。在这种情况下,总会有一些波动。

你应该把你的函数运行,比如说1000次(或者更多/更少,反正至少要运行几分钟,而且调用次数不能少于10到20次),然后测量完成这1000次调用所需的总时间,最后把这个总时间除以调用次数,就能得到一次调用所需的时间。

撰写回答