简单理解:协程、线程、进程

1、进程

进程就像是 多开几个word,各运行各的。可以充分利用多核cpu

2、线程

线程就像是浏览器里多开几个页面,各运行各的,但都是在同一个浏览器的进程下的。可以充分利用cpu主观能动机制

但是由于cpu的轮转执行的,也就是说,cpu是假的并行执行,而是 执行1秒a进程,再执行一秒b进程,再执行a,再执行b。折腾的时间,浪费的很多。

3、协程

IO 是影响程序运行速度的重要原因!
例如:爬虫,需要访问多个网站,向每个网站发出请求后会等待结果。如果不等待的话,先做别的网站是不是总体速度会提升?
这就提出了 异步IO 的概念。
解决 异步IO协程

示例程序

async def hello():
    print("Hello world!")
    r = await asyncio.sleep(1)
    print("Hello again!")

async 表示声明 后面的函数hello 是个协程,要按照协程的方式来处理。
await 表示,程序执行到这的时候可以暂停,先干别的!
这样就形成了 异步IO

如果有多处有IO,可以多加几个 await。
如果没有await,那就是 不可以中途停止。那就失去协程的意义了。

一句话总结协程

当一个函数,因为有IO操作,会导致等待的出现。那么就让他在等待的时候先干别的。

tip

协程 是在 一个线程 下完成的。

协程的后端运作机制是生成器

粗浅的心得,欢迎拍砖

posted on 2019-08-01 23:01  耀扬  阅读(178)  评论(0编辑  收藏  举报

导航