Три способа выполнить множество задач с 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
Dirigente di #Azione all'ANSA: "La pazienza del gruppo dirigente di Azione si è esaurita. In settimana si capirà se questo nodo si potrà sciogliere. Se così non sarà il partito unico non potrà nascere"
@UltimoraPolitics
La #Camera approva la festa nazionale di San Francesco il 4 ottobre, in vigore dal 2026. Dal 2027 previsti nuovi oneri per 10,6 milioni di euro, di cui 8,7 milioni per la Sanità. Il provvedimento, votato da tutti i partiti ad eccezione di #Azione che si è astenuta, passa ora all’esame del Senato.
@UltimoraPolitics
La Camera ha definitivamente approvato, con 184 voti favorevoli e 85 contrari, il Ddl delega per la riforma fiscale. Sì anche dal gruppo #Azione e #IV.
@UltimoraPolitics
❗Terzo Polo, firmata la 'tregua' tra #IV e #Azione. Sottoscritto un documento comune, approvato all'unanimità, per avviare un percorso per una lista unitaria alle prossime elezioni europee. I gruppi parlamentari resteranno in vita con gli attuali numeri
@UltimoraPolitics
Carlo #Calenda (#Azione): "Alle Regionali correre da soli, pur con un progetto come è successo in Sardegna e in Lombardia con Letizia Moratti non è fattibile e non lo faremo più."
@UltimoraPolitics
Carlo #Calenda (#Azione): "L'arresto di Matteo Messina Denaro è una grande vittoria dello Stato che oggi dimostra tutta la sua forza. Una sfida vinta dagli uomini e dalle donne della magistratura e delle forze dell'ordine a cui va il nostro ringraziamento. Un giorno storico per l'Italia."
@UltimoraPolitics
Carlo #Calenda (#Azione): "Da domenica a venerdì sarò in Ucraina. Ho accolto l’invito del sindaco di Leopoli che era intervenuto alla nostra manifestazione. Poi andrò a Kiev"
@UltimoraPolitics
Carlo #Calenda (#Azione): "Marcello Gemmato si deve dimettere. Un sottosegretario alla Salute che non prende le distanze dai novax è decisamente nel posto sbagliato" @UltimoraPolitics