Конструкция async for ... in ...
позволяет циклически проходить через «Асинхронный итеративный», и, как указано в комментариях, подробное объяснение приведено в PEP 492
В вашем примере async for
loop, ожидает ввода стандартного ввода, не блокируя другие задачи асинхронного цикла.Если бы вы использовали цикл for
, это была бы операция блокировки, и никакие другие задачи в цикле не могли быть выполнены, пока вы не ввели ввод.
Чтобы получить другой пример, представьте, что клиент MySQL извлекает xстроки из базы данных. пример aio-mysql
async for row in conn.execute("SELECT * FROM table;"):
print(row)
Эта команда извлекает одну строку и не блокирует выполнение других задач в асинхронном цикле во время ожидания операций ввода-вывода (запрос mysql).
Затем вы что-то делаете с данными строк, которые вы получили.