Python学习笔记:协程初探
(本文主要参照Python在线文档进行学习) 0.前言 进程有自己独立的堆和栈,由操作系统调度;线程有独立的栈,共享堆空间,标准的线程也是由操作系统调度;协程和线程一样共享堆不共享栈,但是是由程序员在协程的代码里显示调度。协程避免了无意义的调度,进而提升性能,但也增加了程序员的责任。 1.初探 asyncio是一个使用 async / await 语法编写并发代码的库,在Python 3.4 引入,直接内置了对异步IO的支持,并在后来的版本中不断完善。早期基于生成器来实现协程,但是在 Python 3.8 开始不推荐使用该方式,并将在 3.10 移除。目前标准的是使用 async / await 语法来实现协程。 要实际运行协程,asyncio 提供了三种主要机制: a.使用 asyncio.run() 函数来运行顶层入口点 (运行代码需要 Python3.7 ;要注意的是,直接调用 func() 并不能执行) import asyncio import time async def func(): print('func in'+time.strftime('%X')) await asyncio.sleep(3) print('func out'+time.strftime('%X')) print('begin'+time.strftime('%X')) asyncio