У меня возникли проблемы с пониманием использования асинхронных понятий, представленных в Python 3.6. Как отказ от ответственности, у меня нет большого опыта работы с асинхронным кодом вообще в Python.
Пример, приведенный в для нового документа Python 3.6:
result = [i async for i in aiter() if i % 2]
В PEP это расширено:
result = []
async for i in aiter():
if i % 2:
result.append(i)
Я думаю, что я понимаю, что функция aiter()
вызывается асинхронно, поэтому каждая итерация aiter
может продолжаться без предыдущей, которая обязательно возвращается (или это понимание неверно?).
То, что я не уверен, так это то, что затем переводит на понимание списка здесь. Устанавливаются ли результаты в список в том порядке, в котором они возвращаются? Или есть эффективные "заполнители" в конечном списке, чтобы каждый результат был помещен в список в правильном порядке? Или я думаю об этом неправильно?
Кроме того, кто-то может предоставить пример в реальном мире, который иллюстрирует как применимый пример использования, так и основную механику async
в таких выражениях?