python基础语法27-协程异步I/O

异步IO:就是发起一个IO操作(如:网络请求,文件读写等),这些操作一般是比较耗时的,不用等待它结束,可以继续做其他事情,结束时会发来通知。
协程:又称为微线程,在一个线程中执行,执行函数时可以随时中断,由程序(用户)自身控制,执行效率极高,与多线程比较,没有切换线程的开销和多线程锁机制。
python中异步IO操作是通过asyncio来实现的。
1.协程
协程和生成器类似,都是包含了yield关键字,不同之处在于协程中yield关键词通常出现在=右边,可以产出值a(y = yield a)或不产出值时为None(y = yield)。调用方可以用send函数发送值给协程。
激活协程时在yield处暂停,等待调用方发送数据,下次继续在yield暂停。从根本上看,yield是流程控制的工具,可以实现协作式多任务,这也是后面讲解异步IO的基础。
协程示例:
def demo(name):
    print('开始协程的名字:',name)
    x = yield name#调用next()时,产出yield右边的值后暂停;调用send()时,产出值赋给x,并往下运行
    print('发送的值:',x)
c = demo('jack')
print('next的返回值:',next(c))
print('发送的返回值:',c.send(6))
结果如

猜你喜欢

转载自blog.csdn.net/a316495442/article/details/128485688