Следующий пример показывает, что мы можем запустить фазу 1, а затем запустить фазу 2. Но то, что мы хотели с сопрограммой, это делать две вещи одновременно, а не одну за другой. Я знаю, если я использую asyncio.get_event_l oop .create_task может достичь того, что я хочу, но зачем использовать await? Я думаю, что нет никакой разницы между использованием await и просто использованием простой функции.
import asyncio
async def outer():
print('in outer')
print('waiting for result1')
result1 = await phase1()
print('waiting for result2')
result2 = await phase2(result1)
return (result1, result2)
async def phase1():
print('in phase1')
return 'result1'
async def phase2(arg):
print('in phase2')
return 'result2 derived from {}'.format(arg)
event_loop = asyncio.get_event_loop()
try:
return_value = event_loop.run_until_complete(outer())
print('return value: {!r}'.format(return_value))
finally:
event_loop.close()