Три способа выполнить множество задач с 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
❗️ԱՄՆ-ում միջադեպ է տեղի ունեցել UFC մարտիկ Արման Ծառուկյանի հետ․ նրան իջեցրել են ինքնաթիռից՝ թռիչքի ընթացքում հեռախոսով զբաղված լինելու պատճառով։
Մարզիկը մեկնում էր մասնակցելու Real American Freestyle 8 մրցաշարին։
#UFC
Shara "Bullet" will face Michal Oleksiejczuk
The fight will be the co-main event of the UFC tournament in Abu Dhabi, scheduled for August 3.
#UFC
👁Subscribe to Main Event | Sport News
Khamzat Chimaev on his return to the octagon
"There is no fighter in the UFC who has won seven fights and hasn't fought for the title. Right now, I'm training in Russia, at 'Akhmat.' I've never had conditions like this anywhere else before."
#UFC
👁Subscribe to Main Event | Sport News
Масштабный проект для турнира UFC
Трамп анонсировал строительство стадиона на 100 000 мест для турнира UFC рядом с Белым домом. Это будет самое массовое мероприятие в истории UFC, превосходящее предыдущий рекорд в 57 000 зрителей.
#UFC#Спорт
Russia News — Подпишись