Три способа выполнить множество задач с 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
Grand #Ethiopian Renaissance Dam: how #Africa’s largest hydropower project Is powering #Ethiopia’s future
A detailed examination of the Grand Ethiopian Renaissance Dam – its construction, specifications, commissioning, regional impact, and remaining challenges.
The Grand Ethiopian Renaissance Dam (#GERD) is the largest hydropower project in Africa. Located on the #Blue_Nile in Ethiopia’s #Benishangul-Gumuz region, about 14km from the Sudanese border, the project has been delivered by Ethiopian Electric Power (#EEP) with major civil works undertaken by #Webuild Group (formerly #Salini Impregilo).
The objective of the dam is to increase Ethiopia’s electricity generation capacity, reduce dependence on imported energy, and support long-term industrial and economic development.
Construction began in 2011, and Ethiopia officially inaugurated......
Read more: https://www.waterpowermagazine.com/analysis/grand-ethiopian-renaissance-dam-how-africas-largest-hydropower-project-is-powering-ethiopias-future/?cf-view