python列舉優點 使用列舉的好處?

2021-10-19 21:37:33 字數 1160 閱讀 6065

如果您想知道效率,有幾種工具可以用來檢查哪個解決方案/演算法更有效。這稱為分析。在

分析的第乙個目的是測試乙個有代表性的系統,以確定什麼是慢的(或者使用太多的ram,或者導致過多的磁碟i/o或網路i/o)。在

分析通常會增加開銷(10倍到100倍的減速可能是典型的),而且您仍然希望您的**盡可能像在現實世界中那樣使用。提取乙個測試用例並隔離需要測試的系統部分。最好,它已經被編寫成自己的模組集了。在

基本技術包括ipython中的%timeit魔術、time.time(),和timing decorator(見下面的示例)。您可以使用這些技術來理解語句和函式的行為。在

然後你有cprofile,這將給你乙個高層次的問題檢視,這樣你就可以把注意力集中到關鍵的功能上。在

接下來,看看line_profiler,,它將逐行分析您選擇的函式。結果將包括每行被呼叫的次數以及每行所花費時間的百分比。這正是你所需要的資訊,你需要了解什麼執行緩慢,為什麼。在

perf stat幫助您了解最終在cpu上執行的指令數以及cpu快取的利用效率。這允許矩陣操作的高階調整。在

heapy可以跟蹤python記憶體中的所有物件。這對於查詢奇怪的記憶體洩漏非常有用。如果您使用的是長時間執行的系統,

那麼dowser將引起您的興趣:它允許您通過web瀏覽器介面在長時間執行的流程中對活動物件進行內省。在

為了幫助您理解為什麼ram使用率很高,請檢視memory_profiler.這對於跟蹤一段時間內ram的使用情況特別有用,因此您可以向同事(或您自己)解釋為什麼某些函式使用的ram超過預期。在

示例:定義乙個decorator以自動化計時測量from functools import wraps

def timefn(fn):

@wraps(fn)

def measure_time(*args, **kwargs):

t1 = time.time()

result = fn(*args, **kwargs)

t2 = time.time()

print ("@timefn:" + fn.func_name + " took " + str(t2 - t1) + " seconds")

return result

return measure_time

@timefn

def your_func(var1, var2):

python 使用列舉類

當我們需要定義常量時,乙個辦法是用大寫變數通過整數來定義,例如月份 jan 1 feb 2 mar 3 nov 11 dec 12好處是簡單,缺點是型別是int,並且仍然是變數。更好的方法是為這樣的列舉型別定義乙個class型別,然後,每個常量都是class的乙個唯一例項。python提供了enum...

Python 列舉變數的使用

專案中需要大量用到列舉變數,但我們希望可以根據指定的字串,建立對應的列舉變數,並將列舉值作為儲存值 場景 客戶端傳送的訊息包帶有 android 字串,用以說明當前移動端系統型別,伺服器端需要為其建立對應的列舉變數,最終將列舉值 0或1 存入資料庫中 定義乙個抽象的列舉類作為父類 class bas...

python列舉型別 python基礎 列舉類

python 列舉類 示例 2016 8 30 18 55 25 mengmengcoding coding utf 8 from enum importenum enum是乙個列舉類 month,weekday各為乙個enum類的例項化 month enum month jan feb mar a...