微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决为什么 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 举报,一经查实,本站将立刻删除。