Python 性能快速優化: 系列二

注:本文的原文地址爲 Quick Python Performance Optimization: Part IIpython

這個是 Python 性能快速優化的第二部分,第一部分請點擊這裏數據結構

  1. 使用 MapReduceFilter 代替 for 循環
  2. 校驗 a in b字典set列表元組 更好
  3. 當數據量大的時候,儘量使用不可變數據類型,他們更快 元組 > 列表
  4. 在一個列表中插入數據的複雜度爲 O(n)
  5. 若是你須要操做列表的兩端,使用 deque
  6. del - 刪除對象使用以下
    1) python 本身處理它,但確保使用了 gc 模塊
    2) 編寫 __del__ 函數
    3) 最簡單的方式,使用後調用 delide

  7. time.clock()函數

  8. GIL(http://wiki.python.org/moin/GlobalInterpreterLock) - GIL is a daemon

GIL 僅僅容許一個 Python 的原生線程來運行每一個進程。阻止 CPU 級別的並行,嘗試使用 ctypes 和 原生的 C 庫來解決它,當你達到 Python 優化的最後,老是存在一個選項,可使用原生的 C 重寫慢的函數,經過 Python 的 C 綁定使用它,其餘的庫如 gevent 也是致力於解決這個問題,而且得到了成功。oop

TL,DR:當你寫代碼了,過一遍數據結構,迭代結構,內建和爲 GIL 建立 C 擴展,若有必要。性能

更新:multiprocessing 是在 GIL 的範圍以外,這意味着你可使用 multiprocessing 這個標準庫來運行多個進程。優化

看下個人 2013 的印度 PyCon 演講ui

相關文章
相關標籤/搜索