page contents

简述多线程、多进程、协程?

轩辕小不懂 发布于 2021-09-22 14:39
阅读 587
收藏 0
分类:面试与就业
1992
Nen
Nen
- 程序员

1、进程:一个运行的程序(代码)就是一个进程,没有运行的代码叫程序,进程是系统资源分配的最小单位,进程拥有自己独立的内存空间,所以进程间数据不共享,开销大

2、线程: 调度执行的最小单位,也叫执行路径,不能独立存在,依赖进程存在一个进程至少有一个线程,叫主线程,而多个线程共享内存(数据共享,共享全局变量),从而极大地提高了程序的运行效率

3、协程:是一种用户态的轻量级线程,协程的调度完全由用户控制。协程拥有自己的寄存器上下文和栈。 协程调度切换时,将寄存器上下文和栈保存到其他地方,在切回来的时候,恢复先前保存的寄存器上下文和栈,直接操作栈则基本没有内核切换的开销,可以不加锁的访问全局变量,所以上下文的切换非常快。

补充

1、python 提供了multiprocessing 模块来支持多进程,在linux上是通过fork来实现多进程的

2、python 提供了threading 模块来支持多线程,由于有GIL锁的存在,python多线程不能有效利用多核,因此不适合做CPU密集型的任务,但对于I/O密集型的工作还是用得上的

3、python 提供了asyncio来支持协程,关于协程,你一定要明白,协程的概念是建立在线程的基础之上的,不管协程如何切换,都始终运行在一个线程内。

请先 登录 后评论