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這個技術。