Три способа выполнить множество задач с 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
🇮🇩🌋 Une éruption du volcan Dukono s’est produite en Indonésie. Un panache de cendres s’est élevé à une hauteur de 11,1 kilomètres, ont indiqué les autorités du Centre de volcanologie du pays.
Deux personnes ont trouvé la mort, rapporte le journal Kompas en citant les services de secours. 20 touristes sont recherchés, précise Reuters.
#éruption#volcan#cendres
🇮🇩🌋 En Indonésie, le volcan Marapi a projeté des cendres jusqu’à une hauteur de 4,5 kilomètres lors de son éruption, a indiqué le Centre de volcanologie du pays.
#volcan#cendres#éruption
🇮🇩🌋 Une éruption du volcan Semeru s’est produite en Indonésie. Un panache de cendres s’est élevé à une hauteur de 5,7 km, a rapporté le portail Tempo.
#éruption#volcan#cendres
🇵🇭 Aux Philippines, des retombées de cendres volcaniques ont touché 32 localités, a rapporté la chaîne ABS-CBN News, citant l’Institut de volcanologie et de sismologie du pays.
#philippines#volcan#cendres
🇮🇩🌋 Au moins deux éruptions du volcan Dukono se sont produites sur l'île indonésienne de Halmahera (province des Moluques du Nord), rapporte le Centre de volcanologie et de réduction des catastrophes géologiques du pays.
Selon ses informations, une colonne de cendres s'est élevée à 1.300 mètres au-dessus du cratère du volcan et a atteint une hauteur d'environ 2.387 mètres d'altitude.
#éruptions#volcan#cendres