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

为什么Python循环在内部计时比在外部计时快?,python,loops,time,memory-management,Python,Loops,Time,Memory Management,我对我的函数进行计时,以确定高执行时间的来源,并注意到循环内的累积时间远低于循环本身的时间 我使用一个全局变量Node.sstats来存储累积时间,即在每次迭代中,存储总时间的变量都会增加 我简化了我的代码,但我不相信它改变了问题。I循环计时(t3-t2)以及循环内的累积时间(t5-t4)。t3-t2的时间比t5-t4大10倍。因此,循环时间远大于循环内容的累积时间。我还检查了全局变量Node.ksstats(t5b-t5)的更新时间与总循环时间相比并不显著(你最好使用Pyloton分析工具,而

我对我的函数进行计时,以确定高执行时间的来源,并注意到循环内的累积时间远低于循环本身的时间

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


我简化了我的代码,但我不相信它改变了问题。I循环计时(t3-t2)以及循环内的累积时间(t5-t4)。t3-t2的时间比t5-t4大10倍。因此,循环时间远大于循环内容的累积时间。我还检查了全局变量Node.ksstats(t5b-t5)的更新时间与总循环时间相比并不显著(你最好使用Pyloton分析工具,而不是尝试使用你自己的工具。我知道分析工具,但我仍然不了解导致这种情况的潜在机制。你可以尝试
time.monotonic()
而不是
time.time()
看看它是否改变了什么?这对我来说没有任何改变。有没有可能
d
大约是10?
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)