爬蟲知識點(多程序,多執行緒 多協程)

2021-08-09 10:49:38 字數 797 閱讀 6748

笑虎10 個月前

python中比較常見的併發方式主要有兩種:多執行緒和多程序。當然還有協程,這裡不做介紹。

1、多執行緒

多執行緒即在乙個程序中啟動多個執行緒執行任務。一般來說使用多執行緒可以達到並行的目的,但由於python中使用了全域性解釋鎖gil的概念,導致python中的多執行緒並不是並行執行,而是「交替執行」。類似於下圖:**自網路,侵刪)

python提供兩組多執行緒介面,一是thread模組_thread,提供低等級介面。二是threading模組,提供更容易使用的基於物件的介面,可以繼承thread物件來實現執行緒,此外其還提供了其它執行緒相關的物件,例如timer,lock等。

2、多程序

由於python中gil的原因,對於計算密集型任務,python下比較好的並行方式是使用多程序,這樣可以非常有效的使用cpu資源。當然同一時間執行的程序數量取決你電腦的cpu核心數。

執行緒安全 匯入gil概念 全域性直譯器鎖。

不同執行緒是共享記憶體空間的,當乙個執行緒執行時,就會加鎖,防止其他執行緒改變資料,即執行緒安全。

多執行緒 多程序 協程

占用的資源 程序 執行緒 協程 程序的顆粒度太大,每次都要有上下的調入,儲存,調出。執行緒 乙個軟體的執行不可能是一條邏輯執行的,必定有多個分支和多個程式段,就好比要實現程式a,實際分成 a,b,c等多個塊組合而成 這裡的a,b,c就是執行緒,也就是說執行緒是共享了程序的上下文環境,的更為細小的cp...

多執行緒 多程序 協程

程序 個執行的程式 就是乙個程序,沒有執行的 叫程式,程序是系統資源分配的最 小單位,程序擁有自己獨立的記憶體空間,所以程序間資料不共享,開銷大。執行緒 排程執行的最小單位 也叫執行路徑,不能獨立存在,依賴程序存在乙個程序至少有一 個 執行緒,叫主線程,而多個執行緒共享記憶體 資料共享,共享全域性變...

執行緒 程序 協程(多程序,多執行緒)

程序是程式的一次執行過程,是乙個動態概念,是程式在執行過程中分配和管理資源的基本單位,每乙個程序都有乙個自己的位址空間,至少有 5 種基本狀態,它們是 初始態,執行態,等待狀態,就緒狀態,終止狀態。執行緒是cpu排程和分派的基本單位,它可與同屬乙個程序的其他的執行緒共享程序所擁有的全部資源。協程,是...