Process & Thread [二]
wordsCount: 460
readingTime: 1 min
viewers:
Python Global Interpreter Lock
一個GIL鎖,主要是在Cpython的解釋器上,在每個進程生成時,會有一個解釋器負責解釋 ,對多線程有一把鎖,限制同時間只能有一個線程工作,用計數方式,釋放後,所有線程重新競爭GIL,或是遇到io主動釋放
多核心多線程任務
CPU-bound
單進程
CPU-bound任務,想要節省資源,基本會用單進程,但這個解釋器,不管是多核心,或多線程,一次只能讓一個線程工作
例子
類似掃地或擦桌子這種任務,必須持續的做,不做就沒進度,但工作到一半,又會被GIL叫停,回來搶鎖再繼續工作
多進程
可以解決CPU-bound的問題,因為讓每個進程有自己的鎖 缺點:代價是資源的消耗,以及要另外創建資源來做跨進程的溝通
例子
I/O-bound
在io任務中,因GIL遇到io會主動釋放,所以反而適用
協程
在python中雖然多協程,可以最大化降低開銷,但要主動去做切換,而多線程的切換,是交給電腦處理, 所以在I/O-bound任務如果太複雜,也可以用多線程來實作,更多時候,可以視情況混合使用
結論:要高性能處理任務
CPU-bound任務:多進程
I/O-bound任務:多協程,多線程
Table of Contents
Related Posts
Process & Thread [一]
前言 之前在工作上,已經運用多線程,協程,但對於底層運行,還不到通透的地步,重新整理知識 基礎知識 Program 程式
2024-7-25
Architecture_Patterns_With_Python基礎概念
Value Object 值物件 定義:單存資料,沒有特定身份,通常讓他不可變 兩個物件相等的條件是:所有值相等 python 實作方式 dataclass 例
2024-9-1
PoEAA Layer分層
分層 在不管是軟體的開發或硬體架構,分層的作法到處都是,雖然分層讓層與層之間,多了一個轉換的動作, 但一
2024-6-9
Storage [一] 基礎
儲存類型 區塊block 檔案file 物件object 儲存層次(從底層到抽象) 區塊block < 檔案fil
2024-4-28
Storage [二] Object Storage
阿里雲Oss 阿里雲的物件儲存服務,因公司主要使用阿里雲,所以從Oss介紹一些名詞,其他家應該也差不多
2024-4-28
Sponsor
Wechat
Alipay