【发布时间】:2019-04-14 07:27:06
【问题描述】:
我正在尝试asyncio.create_task(),但我正在处理这个错误:
这是一个例子:
import asyncio
import time
async def async_say(delay, msg):
await asyncio.sleep(delay)
print(msg)
async def main():
task1 = asyncio.create_task(async_say(4, 'hello'))
task2 = asyncio.create_task(async_say(6, 'world'))
print(f"started at {time.strftime('%X')}")
await task1
await task2
print(f"finished at {time.strftime('%X')}")
loop = asyncio.get_event_loop()
loop.run_until_complete(main())
输出:
AttributeError: module 'asyncio' has no attribute 'create_task'
所以我尝试使用以下代码 sn-p (.ensure_future()),没有任何问题:
async def main():
task1 = asyncio.ensure_future(async_say(4, 'hello'))
task2 = asyncio.ensure_future(async_say(6, 'world'))
print(f"started at {time.strftime('%X')}")
await task1
await task2
print(f"finished at {time.strftime('%X')}")
loop = asyncio.get_event_loop()
loop.run_until_complete(main())
输出:
started at 13:19:44
hello
world
finished at 13:19:50
怎么了?
[注意]:
- Python 3.6
- Ubuntu 16.04
[更新]:
借用 @user4815162342Answer,我的问题解决了:
async def main():
loop = asyncio.get_event_loop()
task1 = loop.create_task(async_say(4, 'hello'))
task2 = loop.create_task(async_say(6, 'world'))
print(f"started at {time.strftime('%X')}")
await task1
await task2
print(f"finished at {time.strftime('%X')}")
loop = asyncio.get_event_loop()
loop.run_until_complete(main())
【问题讨论】:
标签: python python-3.x async-await python-3.6 python-asyncio