Python併發程式設計

JJJhr發表於2024-08-07

簡介

  • 多執行緒:threading,利用 cpu 和 io可以同時執行的原理,讓 CPU 不會等待 IO 完成
  • 多程序:multiprocess,利用多核 CPU 的能力,真正的並行執行任務
  • 非同步IO:asynio,在單執行緒利用 CPU 和 IO 同時執行的原理,實現函式非同步執行

  • 使用 Lock 對共享資源加鎖,防止衝突訪問
  • 使用 Queue 實現不同執行緒/程序之間的資料通訊,實現生產者-消費者模式
  • 使用執行緒池 Pool 程序池 Pool,簡化執行緒/程序的任務提交、等待結束、獲取結果
  • 使用subprocess啟動外部程式的程序,並進行輸入輸出互動

怎樣選擇多程序、多執行緒、多協程

併發程式設計的三種方式

多執行緒 Thread

多程序 Process

多協程 Coroutine

CPU 密集型計算和 IO 密集型計算

CPU密集型(CPU-bound):

CPU密集型也叫計算密集型,是指 I/O 在很短的時間就可以完成,CPU 需要大量的計算和處理,特點是CPU佔用率相當高。

例如:壓縮解壓縮、加密解密、正規表示式搜尋

IO 密集型(I/O bound):
IO 密集型指的是系統運作大部分的狀況是 CPU 在等 I/O (硬碟/記憶體)的讀/寫操作,CPU 佔用率仍然較低。

例如:檔案處理程式、網路爬蟲程式、讀寫資料庫程式

根據任務選擇對應技術

全域性直譯器鎖 GIL

Python 速度慢的兩大原因

GIL是什麼

為什麼有GIL這個東西

怎樣規避 GIL 帶來的限制

相關文章