本文已参与「新人创作礼」活动,一起开启掘金创作之路。
线程丶进程丶协程的区别
-
请仔细理解下面的描述
-
有一个老板想要开个工厂进行某种商品的生产(例如剪刀)
-
他需要话一些财力物力制作一条生产线,这个生产线上很多器件丶材料以及这些所有为了能够生产剪刀二准备的资源称之为:
进程 -
只有生产线是不能进行生产的,所以老板需要找工人来生产,这些工人能够利用这些材料最终将剪刀一步一步生产出来,工人利用资源制作剪刀这件事称之为:
线程 -
这个老板为了提高效率,想到了3种办法:
- 这条生产线上多招一些工人,一起生产剪刀,这样生产的效率成倍上升,即
单进程丶多线程
- 一条生产线上的资源有限,不是工人越多越好,所以再花钱搞生产线,即
多进程丶多线程
- 已经有很多条生产线,而生产线上也有很多工人,为了再次提高效率,老板想如果哪个员工在上班时没事或者在等待上面的工序下来,那么可以让这个员工在等待的时候利用这个时间去做别的事情,也就是说,如果一个线程等待某些条件,可以充分利用这个时间去做别的事情,即称之为
协程
- 这条生产线上多招一些工人,一起生产剪刀,这样生产的效率成倍上升,即
-
简单总结
- 进程是资源分配的单位,一个运行的程序包括这个程序所能够调度的所有资源统称为
进程 - 拿着进程的资源去执行代码的单位称之为
线程 - 多进程需要的资源很大,每次运行子进程都要把原来的代码复制在运行,效率低
- 多线程需要资源一般,效率一般(不考虑GIL的情况下)(线程之间切换消耗费时)
- 协程需要的资源很小,执行效率高
- 多进程,多线程根据cpu核数不一样可能是并行的,但是
协程是在一个线程中,是并发