Три способа выполнить множество задач с 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
#аренда#А839⤴️⤴️⤴️
Гениальная диспозиция.
Первый стол — для красоты: можно эффектно поставить чашку кофе и развернуть газету 🗞️, создав иллюзию кипучей деятельности.
Второй стол — для правды. Именно на него тайно выкладываются те самые лапша, суши и пицца, которые только что «вышли из духовки» 🍱 с триумфальным возгласом «Ещё тепленькое!»
Система позволяет совершать магический трансфер еды из пакета в кастрюлю, пока друзья в гостиной восхищаются вашим безупречным вкусом 🤌🏻
💸115к/мес + к/у 100к/мес + к/у
📐 55 м²
🪜 этаж 2 из 4
📍Радищева, 32
📱на связи агент Оксана +7 903 982 28 51
*больше фото в комментариях ⤵️
Нестыдные | Петербург.
Подписаться