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

2021-10-02 17:03:19 字數 523 閱讀 8297

cpython直譯器記憶體管理並不是是執行緒安全的

保護多執行緒情況下對python物件的訪問

cpython使用簡單的鎖機制避免了多個執行緒同時執行位元組碼同一時間只有乙個執行緒執行位元組碼

cpu密集程式(大量時間花在計算)難以利用多核優勢

io期間會釋放gil,對io密集程式(大量時間花在網路、磁碟讀寫)影響不大

cpu密集的可以使用多程序+執行緒池

io密集可以使用多執行緒/協程

cython拓展

乙個操作如果是乙個位元組碼指令就可以完成就是原子的

原子是可以保證執行緒安全的

使用dis操作來分析位元組碼

資料結構與演算法優化

資料庫層:索引優化、慢查詢消除、批量操作刪除io,nosql

網路io:批量操作,pipline操作,減少io

快取:使用記憶體資料庫 redis/mecached

非同步:asynio,celery

併發:gevent/多執行緒

linux 效能分析與優化

一 影響linux伺服器效能的因素 1 作業系統級 cpu 記憶體 磁碟i o效能 網路頻寬 2 程式應用級 二 系統效能評估標準好 壞 極差cpu user sys 70 user sys 85 user sys 90 記憶體swap in si 0 swap out si 0 per cpu w...

mysql效能分析與優化

hash索引的限制 hash索引必須進行二次查詢 hash索引無法用於排序 hash索引不支援部分索引查詢,也不支援範圍查詢 hash索引中hash碼的計算可能存在hash衝突 為什麼要使用索引 索引大大減少了儲存引擎需要掃瞄的資料量 索引可以幫助我們進行排序以避免使用臨時表 索引可以把隨機i o變...

Python效能優化

python是資料分析神器。你肯定會遇到效能上的問題,比如一段程式要跑好幾個小時,但其實你優化一下程式,就只花幾分鐘而已。下面是一些效能優化上的建議 1.盡可能地減少io操作 io操作是非常耗時的,相對於cpu運算來說。一次檔案讀取,請取出你後面可能用到的最多資料。2.減少迴圈的使用 盡可能地在一次...