asyncio.create_task создает и запускает новые задачиТо есть строка asyncio.create_task(one()) запускает метод one() и добавляет его в event_loop да?
как только игрок закончил свой ход он ждет пока гроссмейстер закончит свои текущие задачи и вернется к немуТо есть, допустим, запустился метод one(), поставился await, а затем event_loop переключился на задачу two(). И допустим, задача two() довольно трудоемкая. И когда время sleep у one() вышло, event_loop работает еще с two(). one() будет ждать, пока event_loop закончит очередь с two(), и только потом event_loop перейдет снова на one() да?
1) в main() как работает event_loop? Он сначала построчно добавляет каждую задачу в event_loop и только потом, когда добавил, в том же порядке начинает их выполнять? То есть смотрит, что было добавлено первее, начинает выполнять, затем откладывает на время, в списке задач переходит к следующему методу и тд? А как только закончил выполнение определенной функции и видит, что уже прошло время, запускает снова нужную функцию. Всё верно или нет? Я просто не понимаю, он сначала все строки читает: заносит задачи в список, или он прочитал строку и сразу начал выполнение этой задачи.
2) Как работает asyncio .run? По сути, он добавляет в event_loop задачи, которые находятся в main(). И для задач, между которыми он может переключаться, await определена. Но что касается самого main()? Это ведь никакая не задача и в список задач event_loop его же не заносит? Или заносит..? То есть в run мы помещаем функцию, которая передастся как задача. Просто в эту задачу мы помещаем набор других задач, так?
В общем. Суть в том, что я не понял, как работает await. Если рассматривать main() как задачу аналогично есть вопросы: А что делает сам await? Вот выполняется первая задача asyncio.create_task(one()); Он доходит до await в one(), метод на время захлопывается? А как он потом вызывается, если основная задача - это main()? Или предусмотрена такая встройка функций? Если функция в main() - async, то она воспринимается как отдельная задача? Если да, то в целом всё ясно: начинается задача main(), выполняется первая строчка кода. one() - асинхронка, а значит добавляется отдельная задача в event_loop. Причём ставится на паузу пока что. Но у нас в event_loop из активных задач есть всё тот же main(), поэтому возвращаемся к main() и продолжаем исполнение. Так что ле?