Python中函数间使用time.time()的问题
我在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次调用所需的总时间,最后把这个总时间除以调用次数,就能得到一次调用所需的时间。