Три способа выполнить множество задач с 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
🎬 **Step Back in Time with "Borrowed Wives" (1930): Laughter & Mismatched Marriages!** 🎉
Discover the hilarity of mistaken identities in the pre-Code comedy "Borrowed Wives." This 1930 classic is a must-watch for vintage film lovers! Subscribe now for more timeless gems and exclusive insights! 🌟🍿#ClassicMovies#HiddenGems
https://publicdomainmovies.info/borrowed-wives-1930/
**Unleashing the Secrets of *The Leopard Woman* (1920)!** 🎬✨ Step into the exotic world of jungle espionage and adventure! This silent gem stars the charismatic Louise Glaum as the enigmatic Leopard Woman. A spellbinding tale of love and intrigue awaits! 🐆💋 Subscribe now for more classic movie treasures! 🌟#ClassicCinema#HiddenGems
https://publicdomainmovies.info/leopard-woman-1920/