Три способа выполнить множество задач с 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
Testamento #Berlusconi, 30 milioni a Marcello Dell'Utri. L'ex senatore: "Sono profondamente commosso. Non me l'aspettavo, nonostante il profondo rapporto di amicizia che ci legava. Da stamane non faccio che piangere"
@UltimoraPolitics
#Berlusconi torna in pubblico, e lo fa con un video-messaggio alla convention di Fi a Milano: "Eccomi, sono qui per voi, per la prima volta in camicia e giacca dopo oltre un mese".
Video: AGTW
@UltimoraPolitics
#Berlusconi, nuovo bollettino medico dal San Raffaele: “Nelle ultime 72 ore si è assistito a un ulteriore costante miglioramento della funzionalità respiratoria e renale, con un efficace contenimento della leucocitosi e della sindrome infiammatoria. Il quadro clinico complessivo indica il proseguimento delle cure in ambito intensivo”.
@ultimoralive
Silvio #Berlusconi: "Il Ponte sullo Stretto riparte: è un progetto concreto, che rappresenta l’idea di futuro che abbiamo sempre avuto. Questa volta la sinistra non ci fermerà"
@UltimoraPolitics
Secondo quanto riporta Il Corriere della Sera, #Berlusconi avrebbe detto ai suoi: "Non è vero che non conosco la guerra da ragazzino sono stato sfollato anche io, gli orrori della guerra li ho vissuti".
@UltimoraPolitics
Silvio #Berlusconi: "Con il mondo sull’orlo di una guerra nucleare, io vengo criticato perché sto chiedendo che insieme ai sostegni per l’Ucraina, da sempre condivisi e votati da Forza Italia, si apra immediatamente un tavolo per arrivare alla pace" @UltimoraPolitics
Silvio #Berlusconi: "Con il mondo sull’orlo di una guerra nucleare, io vengo criticato perché sto chiedendo che insieme ai sostegni per l’Ucraina, da sempre condivisi e votati da Forza Italia, si apra immediatamente un tavolo per arrivare alla pace"
@UltimoraPolitics
Silvio #Berlusconi a margine del voto: "Se fossi stato il presidente del Consiglio a parlare con Zelensky non ci sarei mai andato perché stiamo assistendo alla devastazione del suo Paese e alla strage dei suoi soldati e dei suoi civili. Bastava che cessasse di attaccare le due Repubbliche autonome del Donbass e questo non sarebbe accaduto. Giudico, molto, molto negativamente il comportamento di questo signore"
@UltimoraPolitics