Discuss / Python / 个人理解

个人理解

Topic source

假设上面例子是ABC三个协程 每个协程执行时间10s

asyncio是单线程操作但是内部有消息队列,并且是有序的,通过消息队列在其他线程执行耗时操作

ABC依次执行 A执行到yield就是告诉EventLoop这是个耗时操作 其他协程此时可以运行,A此时中断 将耗时操作交给其他线程执行 等到所有协程都执行到耗时操作这步 没有可执行的协程了 A开始执行耗时操作 并在第二个yield中断 将耗时操作交给其他线程执行 寻找其他可执行协程 然后依次类推到结束 这样总时间因为是异步的所以是10s多一点

asyncio解决的是异步有序 并减少了主线程的频繁切换

如果是单核cpu 实际上为保证有序 协程就不会有作用 执行时间30s

我这么理解对不对?

没有可执行的协程了 A开始执行耗时操作

没这句话


  • 1

Reply