Три способа выполнить множество задач с 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
Why are some freelancers more successful than others?
The difference is simple, they never stop learning.
Successful freelancers know that growth comes from constantly improving their skills, even in small ways.
You don’t need to learn everything at once.
Just focus on learning something new every day.
Over time, those small improvements turn into bigger opportunities and better clients.
React if you agree.
@UpworkProfilePro#Freelancing#Freelancers
19-sentabr IT ta'lim va frilansing forumida qatnashing!
19-sentabr kuni ICTweek haftaligi doirasida CAEx expo markazida boʻlib oʻtadigan IT ta'lim va frilansing forumida karyerangizni yangi bosqichga olib chiqishga yordam beradigan aspektlar va IT sohasidagi eng so'ngi ta'lim tendensiyalari bilan tanishing!
🔃5 ta dinamik seansda bilim, networking yana qimmatbaho sovg'alar bilan boyitilgan unutilmas kunda bizga qo'shiling.
➡️Ro'yxatdan o'tish
IT sohasining katta tajriba egalari bilan suhbatlar, savol-javoblar qismi, panel muhokamalarida faol ishtirok etish imkoniyatini qo‘ldan boy bermang.
🕓Kalendarlaringizni belgilang: 19-sentabr
🗺Manzil: CAEx expo markazi
Yilning eng yirik AKT tadbirining bir qismi bo'ling !
#ICTweek#EducationFreelancingForum#ICTEvent#ITCareers#Freelancing#EducationInnovation#BizgaQoshiling
🌐Sayt🚀Telegram🔵Facebook
📷Instagram🎬YouTube🎰Linkedin