Три способа выполнить множество задач с 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
Updates
😏
Hello friends, We are currently working on a new animated sticker pack, which is expected to be published at the end of next week
😐. We should also publish an emoji pack in May.
New publish date: 2nd week of May
Edit:
why publishing date is delayed?
❓
We need to release the sticker pack on all social media platforms at the same time, and some platforms like LINE App require a review period before approving and releasing the sticker pack on their own sticker store, which is why the release was delayed.
#PeachCat#NewStickers#NewEmojis
Exciting news!
🎉
Peace Elite aka Game for Peace (Chinese PUBG) and Peach & Goma are teaming up in the world of Peacekeeper Elite!
🎮Tencent Games acquired gaming rights to iconic anime franchise, Peach and Goma! Get ready for epic adventures and adorable Games featuring Peach and Goma. 📱
#PeaceElite#GameForPeace#PUBG#ChinesePUBG#PeachCat#PeachGoma
@PeachLovesGoma
❤️