线程进程协程
-
进程是系统进行资源分配和调度的一个独立单位,进程是资源分配的单位,线程是cpu调度的单位。
-
线程是进程的一个实体,是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位.线程自己基本上不拥有系统资源,
-
只拥有一点在运行中必不可少的资源(如程序计数器,一组寄存器和栈),但是它可与同属一个进程的其他的线程共享进程所拥有的全部资源.
-
线程包含再进程中
-
协程,又程微线程,纤程,英文名:coroutine
-
而协程的操作则是程序员指定的,在python中通过yield,人为的实现并发处理。
-
协程存在的意义:
-
协程,则只使用一个线程,分解一个线程成为多个“微线程”,在一个线程中规定某个代码块的执行顺序。
-
协程的应用场景:当程序中存在大量不需要CPU的操作时(IO)。
-
首先我们得知道协程是啥?协程其实比线程更小的执行单元。 为啥说他是一个执行单元,因为他自带CPU上下文。
-
协程和线程差异:
-
线程切换非常耗性能
-
但是协程的切换只是单纯的操作CPU的上下文,所以一秒钟切换个上百万次系统都抗的住。
-
协程的问题-协程程序员自己调度
-
让需要执行的协程更多的获得CPU时间才是问题的关键。
计算密集型和IO密集型
-
计算密集型–>例如for循环里嵌套10层for循环–>占大量的cpu资源–>解决方案–>使用多进程不能用多线程(多线程中有个全局锁GIL)
-
IO密集型->需要网络功能,大量的事件等待网络数据的到来–>多线程、协成
-
尽量不要再协程里面做IO密集型操作