import time
def some_function(x):
t = time.time()
#do something random
y = x*x
delta = 1000000*(time.time() - t)
print("function took " + str(delta) + " microsecond")
return y
if __name__ == "__main__":
x = 4
t1 = time.time()
ret_val = some_function(x)
delta_t = 1000000*(time.time() - t1)
print("everything took " + str(delta_t) + " microsecond")
在我的 main 函數中,我正在計時該函數將花費多長時間,而在該函數中,我正在計時執行所有代碼行所需的時間。
我的假設是這次將非常相似。然而some_function()
,在主文件中執行之後,會有一些滯後,因為代碼的輸出是這樣的:
function took 0.476837158203125 microsecond
everything took 30962.94403076172 microsecond
您的檢測需要避免將其自身的開銷添加到流程中。打印需要相對大量的時間,因此您應該只在收集完所有測量值後才進行打印。這可能需要您的函數提供時間增量作為返回值(或通過全局變量):
import time
def some_function(x):
t = time.time()
#do something random
for _ in range(10000): y = x*x
delta = time.time() - t
return y,delta
if __name__ == "__main__":
x = 4
t1 = time.time()
ret_val,f_delta = some_function(x)
delta_t = time.time() - t1
print("function took " + str(1000000*f_delta) + " microsecond")
print("everything took " + str(1000000*delta_t) + " microsecond")
function took 661.8499755859375 microsecond
everything took 664.2341613769531 microsecond
函數調用實際上只有 2-5 毫秒的成本(包括內部時間測量開銷)。每次運行都會有很大的差異,因為如此小的時間間隔會受到計算機上運行的其他所有設備的各種干擾。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句