Три способа выполнить множество задач с 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
📰Бывшая «Фольксваген Груп Рус» запатентовала в России новую автомобильную торговую марку — Novo
🏭 Российская компания «АГР» запатентовала новую автомобильную марку. ООО «АГР» оформило патент по классу автомобилей под названием NOVO. AGR Automotive Group владеет бывшими заводами концерна VW в Калужской области, а также Hyundai и GM в Санкт-Петербурге.
🔍 Никаких подробностей о том, планируется ли выпускать под новым брендом автомобили, и что это будут за машины, нет.
@avtoNovosti
#Novo#новости
22 декабря 1941 года впервые поднялся в воздух тяжёлый палубный истребитель Fairey Firefly.
Эта британская машина успела повоевать и во Вторую мировую и во множестве других войн второй половины ХХ века включая Корейскую.
Но советским и российским детям и взрослым она знакома как модель фирмы Novo. 😉
#novo#Firefly#ww2#авиация#проавиацию