Три способа выполнить множество задач с 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
🇹🇷 Deux immeubles se sont effondrés à Istanbul, faisant plusieurs blessés.
Les secouristes ont extrait huit personnes des décombres. Les recherches se poursuivent pour retrouver et secourir au moins une autre victime.
#turquie#effondrement#décombres
🇱🇧 Au moins quatorze personnes sont mortes dans l'effondrement d'un immeuble résidentiel à Tripoli, dans le nord du Liban, a annoncé le chef de la Protection civile.
#liban#tripoli#effondrement#victimes
🇲🇽 Une personne a péri et deux autres sont portées disparues dans l'effondrement d'un bâtiment à Mexico, rapporte le journal El Universal.
#mexique#bâtiment#effondrement
🇪🇸🏰 Une des tours du château médiéval d’Escalona, dans la communauté autonome espagnole de Castille-La Manche, s’est effondrée.
#château#escalona#effondrement
🇮🇳 Au moins une personne est morte et treize autres ont été blessées dans l'effondrement d'une attraction foraine à Faridabad, dans l'État d'Haryana, dans le nord de l'Inde. C'est ce qu'a rapporté l'agence ANI, citant le commissaire de district de Faridabad.
Selon le commissaire, vers 18h15 (UTC+6), une attraction s'est effondrée lors de la foire Surajkund, tuant un inspecteur de police qui tentait de sauver d'autres personnes. Treize autres personnes ont été blessées et hospitalisées, a indiqué l'agence.
#inde#attraction#effondrement#victimes