Python中多進程、多線程、協程區別和應用場景

面試很容易問到,千萬別混淆:


多進程適合在CPU 密集型操做(cpu 操做指令比較多,如科學計算,位數多的浮點運算)


多線程適合在IO 密集型操做(讀寫數據操做較多的,好比爬蟲)

 

線程是併發,進程是並行;進程之間相互獨立,是系統分配資源的最小單位,同一個進程中的全部線程共享資源。

進程:一個運行的程序或代碼就是一個進程,一個沒有運行的代碼叫程序。進程是系統進行資源分配的最小單位,進程擁有本身的內存空間,因此進程間數據不共享,開銷大。面試

線程:調度執行的最小單位,也叫執行路徑,不能獨立存在,依賴進程的存在而存在,一個進程至少有一個線程,叫主線程,多個線程共享內存(數據共享和全局變量),所以提高程序的運行效率。多線程

協程:用戶態的輕量級線程,調度有用戶控制,擁有本身的寄存器上下文和棧,切換基本沒有內核切換的開銷,切換靈活。併發

相關文章
相關標籤/搜索