目錄
- 時間戳相減
- 裝飾器
- timeit模塊
- cProfile性能分析工具
時間戳相減
在代碼執(zhí)行前后各記錄一個時間點,兩個時間戳相減即程序運行耗時。
獲取時間戳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模塊
timeit 模塊提供了測量 Python 小段代碼執(zhí)行時間的方法,可以在命令行界面直接使用,也可以通過導入模塊進行調用。
語句執(zhí)行 number 次的時間
#導入timeit.timeit
from timeit import timeit
#看x=1的執(zhí)行一次的時間(number可以省略,缺省為1000000)
t1 = timeit('x=1', number=1)
print(t1)
#一個列表生成器的執(zhí)行時間,執(zhí)行10000次:
t2 = timeit('[i for i in range(100) if i%2==0]', number=10000)
print(t2)
輸出:
4.0000000001150227e-07
0.04841430000000002
計算函數的執(zhí)行時間
from timeit import timeit
def func(a):
sum = 0
for i in range(a):
sum += i
return sum
# timeit(函數名_字符串,運行環(huán)境_字符串,number=運行次數)
t = timeit('func(10000000)', 'from __main__ import func', number=1)
print(t)
輸出:
0.4887406
重復調用 timeit()
repeat() 方法相當于持續(xù)多次調用 timeit() 方法并將結果返回為一個列表。repeat 參數指定重復的次數,number 參數傳遞給 timeit() 方法的 number 參數。
import timeit
def func(a):
sum = 0
for i in range(a):
sum += i
return sum
# timeit(函數名_字符串,運行環(huán)境_字符串,number=運行次數,repeat=重復次數,repeat=5)
t = timeit.repeat('func(100000)', 'from __main__ import func', number=100, repeat=5)
print(t)
cProfile性能分析工具
cProfile(語言編寫的測試模塊)是一個標準庫內建的性能分析工具,可以在標準輸出中看到每一個函數被調用的次數和運行的時間,從而找到程序的性能瓶頸,從而有針對性的進行性能優(yōu)化。
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 統計代碼耗時的幾種方法分享的詳細內容,更多關于python 統計代碼耗時的資料請關注腳本之家其它相關文章!
您可能感興趣的文章:- Python 統計數據集標簽的類別及數目操作
- Python統計可散列的對象之容器Counter詳解
- Python 統計列表中重復元素的個數并返回其索引值的實現方法
- Python實戰(zhàn)之單詞打卡統計
- python之cur.fetchall與cur.fetchone提取數據并統計處理操作
- python自動統計zabbix系統監(jiān)控覆蓋率的示例代碼
- Python統計列表元素出現次數的方法示例
- python統計RGB圖片某像素的個數案例
- Python jieba 中文分詞與詞頻統計的操作
- 利用Python3實現統計大量單詞中各字母出現的次數和頻率的方法
- 使用Python 統計文件夾內所有pdf頁數的小工具
- python 統計list中各個元素出現的次數的幾種方法
- python調用百度AI接口實現人流量統計
- Python代碼覆蓋率統計工具coverage.py用法詳解
- python 爬蟲基本使用——統計杭電oj題目正確率并排序
- 利用python匯總統計多張Excel
- python統計mysql數據量變化并調用接口告警的示例代碼
- 用python實現監(jiān)控視頻人數統計