Три способа выполнить множество задач с asyncio
Функция для примера:
async def do_it(n):
await asyncio.sleep(random.uniform(0.5, 1))
return n
1. Последовательный вызов
async def main():
for i in range(100):
result = await do_it(i)
Такой вызов имеет смысл только тогда, когда результат одной задачи требуется для вызова следующей.
Если они независимы, то это антипаттерн, так как аналогичен простому синхронному вызову по очереди.
2. Упорядоченный результат
async def main():
tasks = [do_it(i) for i in range(100)]
results = await asyncio.gather(*tasks)
Выполняет корутины конкурентно и возвращает результат в виде списка.
Полезен когда требуется получить результаты в том же порядке в котором задачи отправлены.
3. Результат по мере готовности
tasks = [asyncio.create_task(do_it(i)) for i in range(100)]
for cor in asyncio.as_completed(tasks):
result = await cor
Так же выполняет корутины конкурентно, но не гарантирует порядок. Результат возвращается по мере готовности, каждый отдельно.
Полезен когда нужно обработать любой ответ как можно скорее.
#async
🧠Завтра глобальный релиз Neo Artifacts
😍 Это восточная SRPG в 2D-стиле, где артефакты, воплощённые в облике живых людей, сражаются против Искажений.
😍 Официальный сайт: тык
😍 Предзагрузка:
• Google Play
• App Store
💬 Почитала про неё и узнала, что глобальная версия будет хуже китайской в некоторых аспектах...
🤔 Интересно, это правда?
[Тег: #NA]
😍 Больше в iNFO Daily
😍Neo Artifacts — доступна глобальная предрегистрация
😍 Это восточная городская фэнтези-RPG, выполненная в 2D стиле, где вы как Куратор сражаетесь с Искажением вместе с одушевлёнными артефактами под покровительством Фонда Канти.
😍 Доступна предрегистрация, а также возможность получить доступ к бета-тестированию с 1 по 14 января.
😭 Канал с видео на YouTube: тык
😍 Официальный сайт: тык
💬 Ничего особо не зацепило, но по ощущениям игра явно делает ставку на сюжет.
[Тег: #NA]
😍 Больше в iNFO Daily