老师,这两个带await的代码 还是不大懂?

老师,这两个带await的代码 还是不大懂?

正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

1回答
好帮手慕美 2019-11-18 14:28:24

同学,你好。使用await可以针对耗时的操作进行挂起,就像生成器里的yield一样,函数让出控制权。

1、store.put(i)得到的是协程的对象,要得结果就要将协程任务挂起去执行,得到这个返回值即await store.put(i)

2、await asyncio.sleep(random.randint(1, 5)):添加关键字await,将协程的耗时操作挂起。所以当协程执行的时候遇到 await,时间循环就会将本协程挂起,转而去执行别的协程,直到其他的协程挂起或执行完毕。

如果我的回答解决了您的疑惑,请采纳!祝学习愉快~~~~

  • 解释下这个 “挂起” 这个词呗 换个说法 store.put(i) 没有 await 时 为什么 在循环里 store.qsize() 都是0
    2020-03-18 10:42:49
  • 同学,你好。挂起也可以理解为等待,store是一个协程的对象,那么当协程队列被添加的时候,由于下面的协程需要sleep,所以为了不让后面的协程阻塞,添加关键字await,将前面的协程的耗时操作挂起暂停执行,去执行别的协程,直到其他的协程挂起或执行完毕后再回来执行该线程。祝学习愉快~~~~
    2020-03-18 16:10:04
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
1.Python零基础入门
  • 参与学习           人
  • 提交作业       2727    份
  • 解答问题       8160    个

想要进入Python Web、爬虫、人工智能等高薪领域,你需要掌握本阶段的Python基础知识,课程安排带你高效学习轻松入门,学完你也能听得懂Python工程师的行业梗。

了解课程
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师