Три способа выполнить множество задач с 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
Есть среди наших подписчиков у кого уже есть мини #applebox? Когда то делал именные, их всего было 5-6 шт. В этот раз сделал 50 шт, в прошлый было 40))) если кому надо обращайтесь, есть ещё, отправлю куда угодно писать в телегу мне @fidller
Принял для себя очень важное решение. Ни для кого не секрет, что я совместно с сайтом fidller.com стал лидером в ЮФО по производству #applebox и наши подставки сейчас это самое доступное решение в мире, также моя статья была первой русско-язычной в рунете о #appleboxset (спасибо коллегам за это).
Поэтому, начиная с этого дня я буду называть эпл боксы - #arbat пришло время что то менять в индустрии!
Почему #arbat ну тут все логично и следите за публикациями, этому будет посвящена статья. эпл бокс нужно заказывать на сайте или написав мне в личку, сайт работает по программе "100% клиентоорентированность" доставка по всему миру (включая Крым)
https://fidller.com/komplekt-apple-box-4-sht/