進程線程協程的區別

https://www.cnblogs.com/lei0213/p/8393323.html

### 進程池

一個進程佔用一個CPU,佔用一定的內存空間。一般CPU配置都是4核,如果開的進程太多,其他的程序就得等着。

###### 什麼情況家使用多進程?

CPU是用來計算的。所以在CPU密集運算的情況下,才使用多進程。

具體要開幾個進程,根據機器的實際配置和實際生產情況而定。

### `線程池`

進程裏面纔有線程,一個進程裏面默認一個線程。

###### 什麼情況下使用多線程?

多線程適合IO操作,但是也不是開啓的線程越多越好,需要根據實際情況而定。

太多的線程會佔用過多的系統資源(內存開銷,CPU開銷)。

### `協程`

協程:又稱微線程纖程。通俗的講就是比線程還要小的線程,所以才叫微線程。

優點:

1. 使用高併發、高擴展、低性能的;一個CPU支持上萬的協程都不是問題。所以很適用於高併發處理。
2. 無需線程的上下文切換開銷;(乍一看,什麼意思呢?我們都知道python實際上是就是單線程,那都是怎麼實現高併發操作呢,就是CPU高速的切換,每個任務都幹一點,最後看上去是一起完事兒的,肉眼感覺就是多線程、多進程)

缺點:

1. 無法利用CPU的多核優點,這個好理解,進程裏面包含線程,而協程就是細分後的協程,也就是說一個進程裏面首先是線程其後纔是協程,那肯定是用不了多核了,不過可以多進程配合,使用CPU的密集運算,平時我們用不到。

一般情況下用的比較多的是asyncio或者是gevent這兩個技術實現協程,asyncio是python自帶的技術,gevent第三方庫,個人比較喜歡gevent這個技術。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章