1.行程
1.行程可以使用計算機多核
2.行程是資源分配的單位
3.行程的創建要比執行緒消耗更多的資源效率很低
4.行程空間獨立,資料安全性跟好操作有專門的行程間通信方式
5.一個行程可以包含多個執行緒,執行緒共享行程資源
6.行程有自己特有資源
7.多行程根據cpu核數不一樣可能是并行的
2.執行緒
1.執行緒可以使用計算機多核
2.執行緒是作業系統調度的單位
3.執行緒切換從系統層面保存和恢復CPU背景關系以及每個執行緒自己的快取Cache等資料,切換時需要的資源一般效率一般
4.執行緒使用全域變數通信,必須要和同步互斥機制配合防止產生資源爭奪
5.一個執行緒中可以包含多個協程函式,協程函式共享執行緒資源
6.執行緒有自己特有資源
7.多執行緒根據cpu核數不一樣可能是并行的
3.協程
1.協程只能用到計算機單核
2.協程對事件的監聽是在應用層完成,沒有占有到內核資源
3.協程的切換通過應用層記錄程式的背景關系堆疊區,因此切換任務資源很小效率高
4.協程無需進行同步互斥操作,對IO并發性極好
5.可以通過調度時的引數實作一個協程函式完成多協程并發
6.協程的特有資源即呼叫時傳遞的引數
7.協程是在一個執行緒中所以是并發
4.IO多路復用
1.IO多路復用只能用到計算機單核
2.IO多路復用對事件的監聽是在內核中完成的,占用到一定的內核資源
3.IO多路復用切換是通過內核的背景關系堆疊區,因此切換任務資源很小效率高
4.IO多路復用無需進行同步互斥操作,對IO并發性極好
5.可以通過調度時的引數實作一個IO多路復用函式完成多IO多路復用并發
6.IO多路復用的特有資源即呼叫時傳遞的引數
7.IO多路復用是在一個執行緒中所以是并發
5.使用場景
1.需要創建較多的并發任務比較簡單執行緒比較合適
2.如果程式間資料資源使用重疊比較多,要考慮到執行緒鎖是否需要更復雜的邏輯
3.如果多個任務無關聯性,不易用多執行緒將其融入到一個行程中
4.Python執行緒不適用語計算密集型并發,適合IO密集型并發
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/10163.html
標籤:Python
