我试图从python asyncio tasks & coroutines documentation运行这个示例
import asyncio
@asyncio.coroutine
def slow_operation(future):
yield from asyncio.sleep(1)
future.set_result('Future is done!')
def got_result(future):
print(future.result())
loop.stop()
loop = asyncio.get_event_loop()
future = asyncio.Future()
asyncio.ensure_future(slow_operation(future))
future.add_done_callback(got_result)
try:
loop.run_forever()
finally:
loop.close()
但是,我得到这个错误:
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: 'module' object has no attribute 'ensure_future'
这句话似乎让我很伤心:
asyncio.ensure_future(slow_operation(future))
我的python解释器是OSX Yosemite上的3.4.3,就像我上面链接的文档版本一样,我从中复制了这个示例,所以我不应该得到这个错误。下面是我的python解释器的一个终端抓取:
Python 3.4.3 (default, Feb 25 2015, 21:28:45)
[GCC 4.2.1 Compatible Apple LLVM 6.0 (clang-600.0.56)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
页面中没有引用asyncio.ensure_future
的其他示例似乎也可以工作。
我尝试打开一个新的解释器会话并从asyncio
导入ensure_future
from asyncio import ensure_future
我收到导入错误:
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ImportError: cannot import name 'ensure_future'
我可以访问另一台运行Ubuntu 14.04并安装了python 3.4.0的机器。我在那里试过同样的导入,不幸的是也遇到了同样的导入错误。
asyncio的api是否已经更改,并且没有在文档示例中反映出来,或者可能有一个错误,并确保文档中的函数应该是其他的东西?
这个例子对SO社区的其他成员有用吗?
谢谢。
https://docs.python.org/3.4/library/asyncio-task.html#asyncio.ensure_future
这就是“Who is to blame?”的意思。关于“What is to be done?”:
相关问题 更多 >
编程相关推荐