為什麼這段代碼在函數執行後需要這麼長時間?

酷德科拉
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
阿蘭·T。

您的檢測需要避免將其自身的開銷添加到流程中。打印需要相對大量的時間,因此您應該只在收集完所有測量值後才進行打印。這可能需要您的函數提供時間增量作為返回值(或通過全局變量):

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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

為什麼這個查詢需要這麼長時間才能執行?

為什麼這段代碼打印出無限的數字?

為什麼這段代碼的輸出在數組中是一樣的?

這行代碼是什麼意思?

VBA/Excel,為什麼IF 條件對這段代碼中的行高沒有影響?

為什麼這段代碼會導致hitbox異常?

誰能解釋為什麼這段代碼會打印垃圾值?

為什麼這段代碼輸出錯誤的答案?

為什麼這段 Golang 代碼會產生死鎖?

為什麼這段代碼會卡在內部 while 循環中?

為什麼這段帶有 Java 泛型的代碼不能編譯?

為什麼這段代碼顯示測試用例錯誤?

為什麼這些代碼片段的行為不同?

為什麼在這個 if 語句中執行“and not”?

為什麼這個自定義反向函數的行為很奇怪?

為什麼這段代碼會產生一個空字典,我該如何解決?

如果我在函數頂部切換註釋行的位置,為什麼我的代碼不起作用?這是一個記憶回憶聲明

這段代碼得到一個錯誤,這些變量沒有被分配到,我不知道為什麼

為什麼這個閉包代碼在不使用捕獲列表時會拋出錯誤?

為什麼執行UrlFetchApp.fetchAll()後函數會失敗?

為什麼編譯器說這個宏函數需要一個右括號?

請幫助我了解這段代碼中發生了什麼

這段代碼中的“groupPrev.next = kth”是做什麼的?

[1] 在這個 python 代碼段中做了什麼?

這段代碼打印空格和星號的模式有什麼問題?

這段代碼中sensor_rate的輸出是什麼意思?

有人可以解釋這段代碼在做什麼嗎?

誰能告訴我為什麼這個函數在調用時會拋出錯誤

為什麼在 Python 中用參數調用這個“構造函數”?