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
协程 是在 一个线程 下完成的。
协程的后端运作机制是生成器
粗浅的心得,欢迎拍砖