python 同步非同步,併發並行,同步鎖

2022-08-31 13:00:11 字數 570 閱讀 3280

併發:系統具有處理多個任務(動作)的能力

並行:系統具有同時處理多個任務(動作)的能力

同步:當程序執行到乙個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操作完成才能返回的...