代码之家  ›  专栏  ›  技术社区  ›  Bambi Bunny

Python在n次重复后测量周期中的增量时间

  •  0
  • Bambi Bunny  · 技术社区  · 7 年前

    请,我需要帮助:)我在python中有一个较长的周期,我想测量每1000次迭代的总周期时间,以及最后1000次迭代之间的时间(我的意思是1000次迭代和2000次迭代之间的差异)。

    变量,它测量我从一开始打电话的总时间 delta 1000次迭代之间的时间调用 d2

    start = time.time()
    for i in range (0, iterations):
    # ... logic in cycle ...
    # calculating delta in each iteration
    delta = time.time() - start
    # Measuring time after every 1000 iterations
    if (i + 1) % 1000 == 0:
        # Calculating  d2 time
        d2 = time.time() - start - d2
        print (str(i + 1) + ' items in ' + time.strftime("%H:%M:%S", time.gmtime(delta)) + ' (' + time.strftime("%H:%M:%S", time.gmtime(d2)) + ')' )
    
    # After cycle
    end = time.time() - start
    print ('Total time: ' + time.strftime("%H:%M:%S", time.gmtime(end)))
    

    以下是结果:

    1000 items in 00:00:07 (00:00:07) 2000 items in 00:00:13 (00:00:06) 3000 items in 00:00:20 (00:00:13) 4000 items in 00:00:27 (00:00:13) 5000 items in 00:00:34 (00:00:20) 6000 items in 00:00:41 (00:00:20) 7000 items in 00:00:48 (00:00:27) 8000 items in 00:00:55 (00:00:27) 9000 items in 00:01:01 (00:00:34) 10000 items in 00:01:08 (00:00:34) 11000 items in 00:01:15 (00:00:41) 12000 items in 00:01:22 (00:00:41)

    看起来在第一个值中是可以的(在第二行中是7秒和13秒的增量),但后来这个时间就消散和混乱了。看最后两行。00:01:08和00:01:15之间的增量大约为7秒(就像前两行一样),而不是41秒。还有最后一行。。。

    哪里有问题?有什么想法吗?

    我很乐意给你任何小费或帮助。非常感谢你

    当做

    1 回复  |  直到 7 年前
        1
  •  2
  •   Bishakh Ghosh    7 年前

    您还必须在每1000次循环中更新d2。我将旧三角洲命名为 old_delta 为清晰起见。

    import time
    
    iterations = 5000
    start = time.time()
    
    old_delta = 0
    for i in range(0, iterations):
        time.sleep(.002)
        # ... logic in cycle ...
        # calculating delta in each iteration
        delta = time.time() - start
        # Measuring time after every 1000 iterations
        if (i + 1) % 1000 == 0:
            # Calculating  d2 time
            d2 = delta - old_delta
            print(str(i + 1) + ' items in ' + time.strftime("%H:%M:%S", 
        time.gmtime(delta)) + ' (' + time.strftime("%H:%M:%S", time.gmtime(d2)) 
        + ')' )
            old_delta = delta
    
    
    # After cycle
    end = time.time() - start
    print ('Total time: ' + time.strftime("%H:%M:%S", time.gmtime(end)))