Гарантируется, что неасинхронные части методов Python не будут чередоваться в асинхронном контексте? - PullRequest
0 голосов
/ 19 марта 2019

Предположим, у меня в главном потоке запущено несколько асинхронных задач.

Я использую в своей функции 'await', чтобы разрешить приостановку выполнения одной функции при вызове блокировки, чтобы позволить другой продолжить.Все хорошо.

Однако есть ли гарантия, что блоки кода между эти вызовы будут выполняться непрерывно?

Мне интересно, могу ли я внести изменения вглобальное состояние между асинхронными вызовами - не беспокоясь о состоянии гонки?

1 Ответ

0 голосов
/ 20 марта 2019

Да.

Циклы событий используют совместное планирование: цикл событий запускает одну задачу за раз.Пока задача ожидает завершения Future, цикл обработки событий выполняет другие задачи, обратные вызовы или операции ввода-вывода.

https://docs.python.org/3/library/asyncio-task.html

...