併發:系統具有處理多個任務(動作)的能力
並行:系統具有同時處理多個任務(動作)的能力
同步:當程序執行到乙個io(等待外部資料)的時候,需要等待,等待即同步
非同步:當程序執行到乙個io(等待外部資料)的時候,不需要等待,待資料接收成功後,再回來處理。
gil:全域性解釋鎖:無論你有多少個執行緒,你有多少個cpu,python在執行的時候會淡定的在同一時刻只允許乙個執行緒執行。(直譯器層面保護程序安全)
gil的作用:同一時刻,只有乙個執行緒被cpu在執行,造成單執行緒執行結果,多核用不到。
垃圾**機制:直譯器的乙個執行緒在進行垃圾**。
cpu切換:io阻塞、cpu執行時間視窗等
執行緒都是競爭cpu資源來獲得執行。
任務:io密集型(io互動多,cpu空閒時間多)、計算密集型(),time.sleep()等同於io操作
對於io密集型任務,python的多執行緒是有意義的,而計算密集型任務,python的多執行緒就不適用了,可以採用多程序。
同步鎖:即將執行緒設定成序列,lock=threading.lock(),lock.acquire(),lock.release()
併發 並行 同步 非同步
併發 任務數量大於核心數,兩個或多個時間在同一時間間隔發生 並行 任務數量小於或等於核心數,兩個或多個時間在同一時間發生 你吃飯吃到一半,來了,你一直到吃完了以後才去接,這就說明你不支援併發也不支援並行。你吃飯吃到一半,來了,你停了下來接了 接完後繼續吃飯,這說明你支援併發。不一定是同時的 你吃飯吃...
併發並行同步非同步多執行緒
自 首先理解概念 你吃飯吃到一半,來了,你一直到吃完了以後才去接,這就說明你不支援併發也不支援並行。你吃飯吃到一半,來了,你停了下來接了 接完後繼續吃飯,這說明你支援併發。不一定是同時的 你吃飯吃到一半,來了,你一邊打 一邊吃飯,這說明你支援並行。併發的關鍵是你有處理多個任務的能力,不一定要同時。並...
併發,並行,同步,非同步, 阻塞, 非阻塞
併發 指某乙個時間段內 非時間點 有多個程式在乙個cpu上執行。例如在1s內,有100個程式執行,但只有乙個程式在某一時刻通過cpu切換程序在真正地執行。就可以說是1s內併發數量為100 並行 指在某乙個時間點,多個程式在多個cpu上被執行。同步 指是 呼叫io操作時,必須等待io操作完成才能返回的...