Три способа выполнить множество задач с 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
🇷🇺🏔️Des images de l'évacuation de touristes sur un itinéraire au Kamtchatka
L’état des blessés sur le col d’Avatchinski est jugé de gravité moyenne, indique l’hôpital régional.
#russie#touristes#évacuation
🇪🇸 Plus de 3.000 personnes ont été évacuées dans le sud de l'Espagne en raison d'une tempête, ont indiqué les secoursistes de la région.
#espagne#évacuation#tempête
🇲🇦Environ 20.000 habitants ont été évacués de l’ancienne ville de Ksar El Kébir, dans la province de Larache au Maroc, à la suite des inondations, a déclaré le chef du département de l’économie.
#maroc#inondations#évacuation
🇵🇹 Les autorités portugaises envisagent d'évacuer 9.000 personnes sur fond de risque d'inondations, a signalé le porte-parole de l’Autorité nationale pour les urgences et la protection civile (ANEPC), Rui Oliveira.
Le fleuve Mondego était précédemment sorti de son lit après l'endommagement d'un barrage près de Coimbra.
#portugal#inondations#évacuation
🇲🇦 Plus de 80.000 personnes ont été évacuées de Ksar El Kébir au Maroc en raison des inondations, rapporte le portail Hespress.
#maroc#inondation#évacuation
🇲🇾 Le nombre de personnes évacuées à la suite des inondations dans l'est de la Malaisie a dépassé les 5.800, a signalé l'agence de presse Bernama.
#malaisie#évacuation#inondations