У меня возникли проблемы с пониманием использования асинхронных понятий, представленных в Python 3.6. Как отказ от ответственности, у меня нет большого опыта работы с асинхронным кодом вообще в Python.Python Asynchronous Comprehensions - как они работают?
Пример, приведенный в what's new for 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
в понимании подобного?
Мне также интересны генераторы async. Такое же поведение или другое? –