【流畅的python】16 - 协程
2024-10-08 01:11:28
yield
产生是产生值给调用方
让步是暂停生成器,同时让步也可以作为流程控制手段
yield item
上面这行代码会产出一个值。提供给next(...)的调用方。此外还会做出让步,暂停执行生成器,让调用方工作。直到需要下一个值时再调用next(),调用方再次会从生成器中拉取值。
yield关键字也可以不接收值或者传出值,它可以只做流程控制之用
协程
协程和生成器从句法上看很相似,都是定义体中包含yield关键字的函数。不过在协程中yield通常出现在表达式的右侧,如下:
item = yield
可以产出值,也可以不产出值,如果yield后面没有表达式,那么生成器产出None。
协程可能会从调用方接收数据,不过调用方把数据提供给协程使用的是.send(value)方法,而不是next(...)函数。通常,调用方会把值推送给协程。
使用yield可以实现协作式多任务:协程可以把控制器让步给中心调度程序,从而激活其他的协程。
本章要介绍的内容:
- 生产器作为协程使用时的行为和状态
- 使用装饰器自动预激协程
- 调用方如何用生成器对象的.close()和.throw()方法控制协程
- 协程终止时如何返回值
- yield from新句法的用途和定义
- 使用协程管理仿真系统中的并发活动
最新文章
- 移动端UC /QQ 浏览器的部分私有Meta 属性
- Go语言学习笔记1 变量,类型以及赋值
- npm库下载缓慢解决方案
- C#字符操作
- Jquery scrollTop animate 實現動態滾動到頁面頂部
- SignalR实时聊天功能
- PowerDesigner实用技巧小结(3)
- SSH框架应用中常用Jar包用途介绍
- 树的直径 poj 2631
- Webdriver实现下载功能,屏蔽掉windows弹出的对话框,FireFox下设置浏览器的属性,两种实现方式:
- Effective前端6:避免页面卡顿
- 使用tcpdump测试反向代理和lvs的nat区别
- Python发邮件的小脚本
- J - Romantic
- 记一次MyBatis的错误
- IE访问历史记录恢复工具pasco
- [Asp.Net web api]基于自定义Filter的安全认证
- Flask框架的学习与实战(一):开发环境搭建
- MYSQL学习笔记 (六)explain分析查询
- Javascript-history.go()和history.back()的用法和区别