Python效能優化小建議

2021-07-01 17:59:46 字數 1739 閱讀 1090

1. 盡量使用區域性變數

python 檢索區域性變數比檢索全域性變數快. 這意味著,盡量避免 "global" 關鍵字. 

2. 盡量使用 "in"

使用 "in" 關鍵字. 簡潔而快速. 

for key in sequence:

print key

3. 當有大量字串連續相加時使用string的join()方法而不是使用「+」號

對於字串相加操作較少的時候,使用「+」是最快的,但當連續相加超過一定的界限時,則使用join()是一種比較快的方式。這是因為

使用 + 連線兩個字串時會生成乙個新的字串,生成新的字串就需要重新申請記憶體,當連續相加的字串很多時(a+b+c+d+e+f+...) ,效率低下就是必然的了。對於這種連加操作可以用列表實現:str = ''.jon(a,b,c,d,e,f,...) 以提高效率,這樣只會有一次記憶體的申請。

4. 為無限迴圈使用 "while 1"

在python2中,true和false不是關鍵字,可以對其進行任意賦值,所以python直譯器就得再程式執行時每次都要對其值進行檢查,而對於1,程式則不會檢查,所以更快。

5. 使用xrange()處理長序列:

因為xrange()在序列中每次呼叫只產生乙個整數元素。而相反 range(),它將直接給你乙個完整的元素列表,用於迴圈時會有不必要的開銷。

例如如下**片:

n=range(10)

print n

print type(n)

結果如下:

[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

再考慮如下**片:

n=xrange(10)

print n

print type(n)

結果如下:

xrange(10)

所以使用range(),生成的是乙個完整的list物件;使用xrange,生成的是xrange的乙個迭代物件,生成器,更省記憶體。當然,如果需要生成的列表項很少,最好還是使用range()。

6. 使用dict 和 set 測試成員:

檢查乙個元素是在dicitonary或set是否存在 這在python中非常快的。這是因為dict和set使用雜湊表來實現。查詢效率可以達到o(1)。因此,如果您需要經常檢查成員,使用 set 或 dict做為你的容器. 

7. 

使用第三方包

有很多為python設計的高效能的第三方庫和工具. 下面是一些有用的加速包的簡短列表. 

1. numpy

: 乙個開源的相當於matlab的包 

2. scipy

: 另乙個數值處理庫 

3. gpulib

: 使用gpus加速** 

4. pypy

: 使用 just-in-time 編譯器優化python** 

5. cython

: 將python優碼轉成c 

Mysql效能優化小建議

mysql的效能優化主要參考文章 1 2 和 3 其中已使用且比較有效果的有 1 禁止autocommit,防止每次插入都提交,重新整理log set autocommit 0 sql import statements commit 2 對頻繁查詢的字段建立索引,但要注意加入索引後,執行插入操作時...

省電的小建議

熱水器隨用隨開。熱水器不要隨時都開著,如果想用,就開啟加熱,加熱溫度合適了,就關閉它,不用總是讓熱水器處於給電保溫的狀態,浪費電能。電視機拔掉插頭。電視機不看了的時候,一定要拔掉插頭,或者將插頭徹底斷電,這樣做的好處是能夠大大節省電能,因為,電視機關閉的情況下也會耗費一定的電。因為由於開啟的一瞬間,...

2 學習小建議

什麼樣的什麼樣的 張三 在什麼樣的時間,什麼樣的地點,什麼樣的方式,什麼樣的條件,什麼樣的 狀態 給 什麼樣的什麼樣的 李四 一本什麼樣的什麼樣的 書 高個子,留著長頭髮的 老師 昨天在學校裡 給 小個子的,留著短頭髮的 學生 一本有趣的英語 書狀語詳細交代了動作的細節情況 表達時間 地點 方式可以...