Три способа выполнить множество задач с 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
🔥 Top Blacksmiths #4 is NOW LIVE! 🔥
🏆 Rewards: Top 50 Blacksmiths will share 150,000 AURA
🎖 Reward Breakdown:
🥇 Top 1: 25K AURA
🥈 Top 2: 15K AURA
🥉 Top 3: 10K AURA
🏅 Top 4-10: 5K AURA
🏅 Top 11-20: 3K AURA
🏅 Top 21-30: 2K AURA
🏅 Top 31-40: 1K AURA
🏅 Top 41-50: 500 AURA
⏰ Duration: Mar 15, 14:00 UTC - Mar 29, 14:00 UTC
📌 Note: Leaderboard rank is based on Points. If Points are tied, higher pot tier ranks higher.
🔨 Prove you're the ultimate Blacksmith! 🏅
#SingSing#TopBlacksmiths
🎤Announcement| Mystic Garden Game |Chat| Spotlight Channel
🔥 Top Blacksmiths #3 is NOW LIVE! 🔥
🏆 Rewards: Top 50 Blacksmiths will share 150,000 AURA
🎖 Reward Breakdown:
🥇 Top 1: 25K AURA
🥈 Top 2: 15K AURA
🥉 Top 3: 10K AURA
🏅 Top 4-10: 5K AURA
🏅 Top 11-20: 3K AURA
🏅 Top 21-30: 2K AURA
🏅 Top 31-40: 1K AURA
🏅 Top 41-50: 500 AURA
⏰ Duration: Feb 15, 14:00 UTC - Mar 1, 14:00 UTC
📌 Note: Leaderboard rank is based on Points. If Points are tied, higher pot tier ranks higher.
🔨 Prove you're the ultimate Blacksmith! 🏅
#SingSing#TopBlacksmiths
🎤Announcement| Mystic Garden Game |Chat| Spotlight Channel
🔥 Top Blacksmiths #2 is NOW LIVE! 🔥
🏆 Rewards: Top 50 Blacksmiths will share 150,000 AURA + $100 $SING!
🎖 Reward Breakdown:
🥇 Top 1: 25K AURA + $20 $SING
🥈 Top 2: 15K AURA + $15 $SING
🥉 Top 3: 10K AURA + $10 $SING
🏅 Top 4-10: 5K AURA + $5 $SING each
🏅 Top 11-20: 3K AURA + $2 $SING each
🏅 Top 21-30: 2K AURA
🏅 Top 31-40: 1K AURA
🏅 Top 41-50: 500 AURA
⏰ Duration: Jan 15, 14:00 UTC - Feb 5, 14:00 UTC
📌 Note: Leaderboard rank is based on Points. If Points are tied, higher pot tier ranks higher.
🔨 Prove you're the ultimate Blacksmith! 🏅
#SingSing#TopBlacksmiths
🎤Announcement| Mystic Garden Game |Chat| Spotlight Channel
🔥 Top Blacksmiths #2 has ENDED! 🔥
Huge respect to all the Blacksmiths who fought till the last second! 🏆⚒️
🎁 Rewards will be distributed within 72h – stay tuned!
#TopBlacksmiths#Rewards
🎤Announcement| Mystic Garden Game |Chat| Spotlight Channel
🔥 LAST DAY of Top Blacksmiths #2! 🔥
⚒️ Top 50 Blacksmiths will share 150,000 AURA + $100 $SING! 🏆
📌 Ranking rules:
✅Leaderboard is based on Points
✅If tied, higher pot tier ranks higher
⏳ EndsFeb 5, 14:00 UTC – make your final push! 🚀
#TopBlacksmiths#AuraRewards
🎤Announcement| Mystic Garden Game |Chat| Spotlight Channel
🔧 Top Blacksmiths Event Update 🔧
Worried about points? Don’t be! 🎉
If points are equal, the player with the higher pot tier will rank higher. 🏆 The leaderboard is already set up with this rule, so forge away without a worry! 🛠✨
🔥 Keep forging and climb the ranks! 🔥
#MysticGarden#TopBlacksmiths#PlayToEarn#Web3Gaming
🎤Announcement| Mystic Garden Game |Chat | Spotlight Channel