Три способа выполнить множество задач с 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
🐡Airdrop: FGC TOKEN (#FGC)
🐋 Total Prize: 2,500,000 $FGC Tokens
🐡 Per participant: 300 $FGC Tokens
🐙 Per referral: 60 $FCG
🐠 After the 2,500,000 $FCG Tokens running out, Airdrop will be ended.
🔗 Airdrop Link: t.me/FishgunAirdrop_Bot
🐠🐠🐠 A game similar to Bombcrypto, but it's not about dropping bombs, it's shooting fish. 🐠🐠🐠
🐳Visit our website: https://fishguncrypto.io/
🐳Contract: 0xE8C0815AFe114aa4EaB8E0dAC201Ad5E979E17F6
Disclaimer: Airdrop is 100% free. Don’t send any fee or penny for receiving AirDrop tokens. Just join Airdrop for free!
🐡Airdrop: FGC TOKEN (#FGC)
🐋 Total Prize: 2,500,000 $FGC Tokens
🐡 Per participant: 300 $FGC Tokens
🐙 Per referral: 60 $FCG
🐠 After the 2,500,000 $FCG Tokens running out, Airdrop will be ended.
🔗 Airdrop Link: t.me/FishgunAirdrop_Bot
🐠🐠🐠 A game similar to Bombcrypto, but it's not about dropping bombs, it's shooting fish. 🐠🐠🐠
🐳Visit our website: https://fishguncrypto.io/
🐳Contract: 0xE8C0815AFe114aa4EaB8E0dAC201Ad5E979E17F6
Disclaimer: Airdrop is 100% free. Don’t send any fee or penny for receiving AirDrop tokens. Just join Airdrop for free!