Гвидо ван Россум в своей речи в 2014 году на Tulip/Asyncio показывает слайд:
Задачи против сопрограммы
Для сравнения:
- res = выход из some_coroutine (...)
- res = выход из задачи (some_coroutine (...))
Задача может добиться прогресса, не дожидаясь ее
- Как журнал, как вы ждете чего-то еще
- то есть. выход из
И я совершенно не понимаю смысла.
С моей точки зрения обе конструкции идентичны:
В случае bare coroutine - он запускается по расписанию, поэтому задача создается так или иначе, потому что планировщик работает с задачами, тогда сопроцессор coroutine coroutine приостанавливается до тех пор, пока не будет выполнен запрос, и затем освободится для продолжения выполнения.
В случае Task
- все-таки - новая задача выбрана, а callout coroutine ждет ее завершения.
В чем разница в том, как код выполнялся в обоих случаях и какое влияние на него должен иметь разработчик на практике?
p.s.
Ссылки на авторитетные источники (GvR, PEP, docs, заметки основных разработчиков) будут очень оценены.