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这个技术。