参考教程

官方文档和廖雪峰教程

实例代码

这是一段取自于官方文档的代码,对于这个asyncio.sleep(1)有点不理解,官方文档对于它的描述是"This function is a coroutine."

对于yield from它的用法又是这样解释的:

result = await coroutine or result = yield from coroutine – wait for another coroutine to produce a result (or raise an exception, which will be propagated). The coroutine expression must be a call to another coroutine.
import asyncio
import datetime
@asyncio.coroutine
def display_date(loop):
end_time = loop.time() + 5.0
while True:
print(datetime.datetime.now())
if (loop.time() + 1.0) >= end_time:
break
yield from asyncio.sleep(1)
loop = asyncio.get_event_loop()
# Blocking call which returns when the display_date() coroutine is done
loop.run_until_complete(display_date(loop))
loop.close()
执行结果
2016-12-18 16:27:04.706730
2016-12-18 16:27:05.708139
2016-12-18 16:27:06.709590
2016-12-18 16:27:07.711203
2016-12-18 16:27:08.712784

问题描述

问题一

display_date(loop)本身也是一个协程,asyncio.sleep(1)也是一个协程,请问sleep这个协程是怎么实现的?看到一些教程说yield from asyncio.sleep(1)用来模拟IO任务,请问大神能举一下例子怎么将这个asyncio.sleep(1)模拟程成真正的IO任务吗?也就是说编写一个自己的模拟IO任务的协程,而不是使用抽象的asyncio.sleep(1)。

问题二

对于loop.run_until_complete(display_date(loop))这段代码display_date(loop)返回的结果是什么?

抱歉因为英文不是很好,官方文档看起来有点吃力,尽力了但是问题描述的还是有点乱,如果描述的不够详细,拜托大神在评论区留言一下,我再改进!

补充

In [1]: def reader():

...: for i in range(4):

...: yield i

...:

In [2]: def reader_from(g):

...: yield from g

...:

In [3]: wrap = reader_from(reader())

In [4]: wrap

Out[4]:

In [5]: reader()

Out[5]:

问题提的没水平,已关闭

相关阅读:

如何让span标签 和 p标签的文字同行?

多说经常会出现打开后无样式的BUG是怎么回事?

bash参数传递——无减号短选项

求ThinkPHP框架I函数源码解析??

C 关于时间戳与时间的转化

我想问一下,IE上和onInput类似的事件还有吗?

python读取文本读出来的显示不一样

有一个函数名(字符串形式),如何能够调用这个函数?

js面向对象怎么封装调用??

nodejs 有什么库是包含浏览器 window 对象的?或者包含浏览器 webrtc 流传输的库?

自己写的PHP代码总是感觉很乱

修改maven源之后无法自动更新依赖

php的单例是否能存留到第二个请求发送的时候呢

最近重做了个网站。总感觉很不好。希望大家给点意见。

事件处理中的函数与回调函数

现在大家是用Win 7 多还是Win 10多呢?

如何使用react-router的browserHistory

laravel5.3中的Vue引入产生的问题

bootstrap table 如果列数是动态的,怎么办

关于js代码加载的问题。