为什么 Python 循环在内部计时比在外部计时更快?

问题描述

我正在为我的函数计时以找出高执行时间的来源,并注意到循环内的累积时间远低于循环本身的时间。

我使用全局变量 Node.sstats 来存储累积时间,即。每次迭代都会增加一个存储总时间的变量。

我简化了我的代码,但我认为它不会改变问题。我对循环 (t3-t2) 以及循环内的累积时间 (t5-t4) 计时。 t3 - t2 的时间是 t5 - t4 的 10 倍。因此,循环时间远大于循环内容的累计时间。我还检查了更新全局变量 Node.ksstats (t5b-t5) 的时间与总循环时间 (

这是我的代码

t2 = time.time()
for a in range(0,d):
    t4 = time.time()
    
    t6 = time.time()
    kurt[a],moments[a] = ik.incr_kurtosis(X[:,a],moments[a])
    t7 = time.time()
      
    Node.ksstats[2] += (t7- t6)
    kurt[a] = log(kurt[a] + 1)
    summ += kurt[a]
   
    # measure the cumulative time of the loop contents         
    t5 = time.time()
    Node.ksstats[3] += (t5-t4)
    # measure cumulative time to update ksstats variable

    t5b= time.time()
    Node.ksstats[5] += (t5b-t5)

# time entire for loop
t3 = time.time()
Node.ksstats[4] += (t3 - t2)

更新

我仍然不确定发生了什么,但我通过更新循环内部的本地 ksstats 变量而不是类变量 Node.ksstats 使循环内部和外部时间相等

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)