进程、线程、协程之间的区别
进程
- 数据隔离
- 数据不安全(数据共享Manager())
- 操作系统级别的
- 开启关闭开销大
- 能利用多核
线程
- 数据共享
- 数据不安全(出现 if while += -=)
- 操作系统级别的
- 开启关闭开销小
- Cpython解释器下不能利用多核
协程
- 数据共享
- 数据安全(协程之间的所有切换都时由用户进行切换的)
- 用户级别的
- 好处:减轻了操作系统的负担,一条线程如果开了多个协程,那么给操作系统的印象就是这条线程很忙,这样就能多争取一些时间片来时间来被CPU执行,那么程序的效率就提高了
- 开启关闭开销更小
- 不能利用多核(协程本质上就是一条线程)
- 协程相比于线程的弊端
- 协程的所有切换操作都基于用户,那么只有在用户级别能够感知到的IO操作才会用到协程模块来切换规避IO(Socket,请求网页的)
- 但是一些和文件操作相关的IO只有操作系统能感知到