加速你的Python

2021-09-27 13:24:29 字數 1307 閱讀 1561

當你尋找這種問題的時候,很開心,你的**水平以及對python的各種資料型別的認知會上公升乙個台階!

我是什麼時候開始思考這種問題的呢?當然是有一天發現模型跑資料的時候,程式一直在執行但卻一直不出最終結果,然後發現作者寫的**真的是低效,不得不說,會寫模型的人不一定會寫**!

1. 用 set 而非 list 進行查詢(初學者的通病)

低效方法:

list_data =

[i for i in

range

(1000000)]

1098987

in list_data # 13.4 ms

高效方法:

set_data =

set(list_data)

1098987

in set_data # 10.3 us

原理很簡單:list 是線性查詢(即從前向後乙個元素乙個元素的查詢),set 是通過hash查詢(通過hash函式直接定位)

2. 用 dict 而非兩個 list 進行匹配查詢

低效方法:

list_a =

[i for i in

range

(1000000)]

list_b =

[i**

2for i in list_a]

print

(list_b[list_a.index(

876567)]

)# 7.5 ms

高效方法:

dict_ab =

dict

(zip

(list_a, list_b)

)print

(dict_ab.get(

876567

,none))

# 141 us

在迴圈中避免重複計算

低速方法:

a =

[i for i in

range

(2000)]

b =[i/

sum(a)

for i in a]

# 32.8 ms

高效方法:

sum_a =

sum(a)

b =[i/sum_a for i in a]

# 266 us

可以參考我之前博文 一篇文章學習python多程序

加速你的 Ubuntu Feisty Fawn

方法來自這篇文章 feisty performance fly like a butterfly 中文翻譯 作者總結了很多關於優化和加速 feisty 的方法。按照下面的方法來做,到底有沒有實際效果,就得大家試了才知道,至少我使用後,發現啟動速度有了很大的提高。注意 以下部分步驟如果修改錯誤,會導致...

給Python加速(效能加速的方法)

轉譯解讀 首先提高 的效能不能以改變 功能為代價。簡而言之,按照原文說的 詳細的解讀包括 選擇乙個正確的資料結構。這個說法深有體會。python中多變的資料結構可以造成很大的差異,使用乙個set就可以事半功倍。甚至乙個自己定義的資料結構,對於記憶體,運算速度,處理方式等都有很大的影響。進行排序 我在...

用squid加速你的web

配置squid的配置檔案,使其支援httpd加速器工作方式。http port 引數指定squid監聽瀏覽器客戶請求的埠號,這裡當然是80了 cache dir ufs tmp 256 16 256 cache dir引數設定使用的儲存系統的型別。一般情況下都型別應該是ufs,目錄應該是 tmp 在...