Три способа выполнить множество задач с 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
🤯 Increíble. Freddie Freeman termina el Juego 3 de la Serie Mundial de 6 HORAS y 39 MINUTOS con un jonrón de oro, repitiendo sus heroicas jugadas decisivas de la serie del '24.
💥 "¡Freddie, conoce a Freddie!" — Bill Shaikin del LA Times
Y fue tan largo que al principio no me molesté en verificar los hechos con la gente en X que escribió que fue el juego más largo de la Serie Mundial (🥲), distinción que aún pertenece al Juego 3 de la Serie Mundial de 2018, que duró 18 entradas y 7 horas con 20 minutos.
#️⃣#PlayOffs25#Freeman
🗞 | t.me/MLB_Daily
🔵 En sus últimos 10 juegos de la Serie Mundial, Freddie Freeman ha conectado siete jonrones y ha impulsado 17 carreras.
🗽 El único otro jugador en la historia de la MLB que ha alcanzado esas cifras en un período de 10 juegos en la Serie Mundial es Lou Gehrig.
📰 Vía Opta STATS
#️⃣#Freeman#Stats#PlayOffs25
🗞 | t.me/MLB_Daily
Trending Apps: Giveaway Results Announced!
#Elephant#Freeman
Trending Apps has announced the winners of the Elephant x Mr. Freeman giveaway. All 100 participants who fulfilled the requirements will receive whitelists, and winners are encouraged to activate @dmf0_bot to receive minting instructions. Thank you to everyone who participated or showed interest!
Source: link
@tonlines
🔵❌🇨🇦 Freddie Freeman ya no jugará en el Clásico Mundial de Béisbol de 2026 debido a razones personales, según Shi Davidi.
#️⃣#Freeman#TeamCanadá#WBC26
🗞 | t.me/MLB_Daily