举个栗子:我要快速装满一桶水,如果一个人向桶中加水需要耗时很久,如果多个人加水呢?结果速度变快了、效率提高了。
很显然一个人干活不能满足我们的设计需要,使用多个就提升了速度并实现了并发不等待。
使用多线程和多进程也是同理,就是为了提高程序执行效率,实现并发/并行。
什么情况下使用多进程?
大家都知道CPU的计算速度非常快,一个CPU同一时刻只能处理一个进程,如果程序中都是计算密集型任务,这类任务的特点是CPU消耗很大,
那使用多进程可以充分的利用CPU资源,明显地提升程序执行效率。但是开启的进程越多,CPU花在任务切换的时间就越多,CPU的效率就越低,
所以,要最高效地利用CPU,计算密集型任务同时进行的数量应当等于CPU的核心数。
什么情况下使用多线程?
如果程序中都是IO密集型任务,涉及到网络、磁盘IO的任务都是IO密集型任务,这类任务的特点是CPU消耗很少,
任务的大部分时间都在等待IO操作完成(因为IO的速度远远低于CPU和内存的速度)。
对于IO密集型任务,任务越多,CPU效率越高,但也有一个限度(一般为CPU数的2倍)。
如果我们的程序没有很多的线程,我们也就没必要采购性能高的服务器,可以节约成本。