Понимание разницы между Async / Await и Task - PullRequest
0 голосов
/ 12 февраля 2019

В документации Python описано, как запустить и использовать coroutines.

В этом разделе описано, как использовать Task.

В разделе Task говорится:

Задачи используются для одновременного планирования сопрограмм

Я не понимаю, что происходит, когда яначать coroutines без , используя Task?Код работает асинхронно , но не одновременно ?Означает ли это, что когда код видит await, он идет и делает что-то еще?

Когда я использую Task, это как , запустить два потока и вызвать join()?Я запускаю две или более задач и жду результата, верно?

1 Ответ

0 голосов
/ 12 февраля 2019

В простых случаях создание Tasks вручную чем-то похоже на потоки - вы можете создать их, цикл событий в конечном итоге запустит их, и в итоге вы должны получить результат / исключение.

Но в большинстве случаев,ваш код построен вокруг await coro() - ничего низкоуровневого.Это означает, что ваш код может выполнять некоторые операции ввода-вывода внутри coro, поэтому процесс может свободно поместить вашу неявно созданную задачу в очередь и возобновить выполнение позже.

...