# coding=utf-8
import asyncio
import time
async def foo (n):
print('Waiting: ', n)
await asyncio.sleep(n)
return n
async def main ():
# 三个协程
coroutine1 = foo(1)
coroutine2 = foo(2)
coroutine3 = foo(4)
tasks = [
# 安排协程或将来等待的程序。
asyncio.ensure_future(coroutine1),
asyncio.ensure_future(coroutine2),
asyncio.ensure_future(coroutine3)
]
# 返回其值为协程的迭代器。
for task in asyncio.as_completed(tasks):
result = await task # 运行协程对象
print('Task ret: {}'.format(result))
if __name__ == '__main__':
now = time.time()
loop = asyncio.get_event_loop()
try:
loop.run_until_complete(main())
finally:
loop.close()
print("总用时", time.time() - now)
输出:
Waiting: 1
Waiting: 2
Waiting: 4
Task ret: 1
Task ret: 2
Task ret: 4
总用时 4.005075216293335