您好,登錄后才能下訂單哦!
這篇文章將為大家詳細講解有關python統計代碼耗時的方法有哪些,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。
在代碼執行前后各記錄一個時間點,兩個時間戳相減即程序運行耗時。
獲取時間戳time.time()
import time start_time = time.time() sum = 0 for i in range(100000000): sum += i print(sum) end_time = time.time() print("耗時: {:.2f}秒".format(end_time - start_time)) 輸出: 4999999950000000 耗時: 10.53秒
獲取當前日期 datetime.datetime.now()
import datetime start_time = datetime.datetime.now() sum = 0 for i in range(100000000): sum += i print(sum) end_time = datetime.datetime.now() print("耗時: {}秒".format(end_time - start_time))
裝飾器是一個裝飾函數的函數,能夠在不改變函數源碼和函數調用方式的情況下給函數增加新的功能。很多時候統計函數的耗時,可以使用裝飾器實現。
import time def get_time(f): def inner(*arg,**kwarg): s_time = time.time() res = f(*arg,**kwarg) e_time = time.time() print('耗時:{}秒'.format(e_time - s_time)) return res return inner @get_time def test(): time.sleep(2) # 模擬運行2s test() 輸出: 耗時:2.000781536102295秒
timeit 模塊提供了測量 Python 小段代碼執行時間的方法,可以在命令行界面直接使用,也可以通過導入模塊進行調用。
語句執行 number 次的時間
#導入timeit.timeit from timeit import timeit #看x=1的執行一次的時間(number可以省略,缺省為1000000) t1 = timeit('x=1', number=1) print(t1) #一個列表生成器的執行時間,執行10000次: t2 = timeit('[i for i in range(100) if i%2==0]', number=10000) print(t2) 輸出: 4.0000000001150227e-07 0.04841430000000002
計算函數的執行時間
from timeit import timeit def func(a): sum = 0 for i in range(a): sum += i return sum # timeit(函數名_字符串,運行環境_字符串,number=運行次數) t = timeit('func(10000000)', 'from __main__ import func', number=1) print(t) 輸出: 0.4887406
repeat() 方法相當于持續多次調用 timeit() 方法并將結果返回為一個列表。repeat 參數指定重復的次數,number 參數傳遞給 timeit() 方法的 number 參數。
import timeit def func(a): sum = 0 for i in range(a): sum += i return sum # timeit(函數名_字符串,運行環境_字符串,number=運行次數,repeat=重復次數,repeat=5) t = timeit.repeat('func(100000)', 'from __main__ import func', number=100, repeat=5) print(t)
cProfile(語言編寫的測試模塊)是一個標準庫內建的性能分析工具,可以在標準輸出中看到每一個函數被調用的次數和運行的時間,從而找到程序的性能瓶頸,從而有針對性的進行性能優化。
Python代碼性能分析之cProfile
import cProfile def func(a): sum = 0 for i in range(a): sum += i return sum if __name__ == '__main__': cProfile.run("func(10000000)")
關于“python統計代碼耗時的方法有哪些”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,使各位可以學到更多知識,如果覺得文章不錯,請把它分享出去讓更多的人看到。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。