Python性能分析與優化,GIL 學習筆記

什麼是CPython GTL

  1. CPython解釋器內存管理並不是是線程安全的
  2. 保護多線程情況下對Python對象的訪問
  3. CPython使用簡單的鎖機制避免了多個線程同時執行字節碼

GIL的影響

  1. 同一時間只有一個線程執行字節碼
  2. CPU密集程序(大量時間花在計算)難以利用多核優勢
  3. IO期間會釋放GIL,對IO密集程序(大量時間花在網絡、磁盤讀寫)影響不大

如何規避GIL影響

  1. CPU密集的可以使用多進程+線程池
  2. IO密集可以使用多線程/協程
  3. cython拓展

Python什麼操作纔是原子的?一步執行完

  1. 一個操作如果是一個字節碼指令就可以完成就是原子的
  2. 原子是可以保證線程安全的
  3. 使用dis操作來分析字節碼

服務端性能優化

  1. 數據結構與算法優化
  2. 數據庫層:索引優化、慢查詢消除、批量操作刪除IO,NoSql
  3. 網絡IO:批量操作,pipline操作,減少IO
  4. 緩存:使用內存數據庫 redis/mecached
  5. 異步:asynio,celery
  6. 併發:gevent/多線程
發佈了16 篇原創文章 · 獲贊 6 · 訪問量 2627
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章