Три способа выполнить множество задач с 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
80 лет спустя после Дня Победы в Тихом океане #VJDay мы отдаем дань уважения всем тем, кто сражался, кто попал в плен, и всем, кто пожертвовал собой.
Наша страна всегда будет в большом долгу перед теми, кто боролся за лучшее будущее.
#LestWeForget#VJDay#VEDay#VEDay80
#OTD 84 года назад 🥇 из арктических конвоев вышел из Хвалфьорда в Исландии в Россию и через 🔟 дней прибыл в Архангельск.
С августа 1941 года по май 1945 года было проведено 78 конвоев, и условия этих миссий были одними из самых тяжелых, с которыми сталкивались моряки антигитлеровской коалиции. Помимо немецких подводных лодок и авиации, они столкнулись с экстремальным холодом, штормами и льдом.
Уровень потерь судов в арктических конвоях был выше, чем на любом другом маршруте союзников. За всю кампанию арктических конвоев из-за немецких подводных лодок и авиации 🩸погибло более 3 тысяч человек.
Арктические конвои доказали, что союзники намерены помогать Советскому Союзу 👊 сопротивляться, тем самым временем готовясь к открытию Западного фронта в Европе.
Сегодня, как и каждый год, мы отдаем дань 🙏 уважения всем храбрым военнослужащим, которые участвовали в Арктических конвоях и отдали свои жизни.
#VEDay80#VE80#ArcticConvoys#VJDay#theUK