Три способа выполнить множество задач с 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
Peanut Rice Paper Pancakes 🥜🥞
Ingredients:
🫓 2 x rice paper
🥬 1 handful of red cabbage, fresh
🫑 1/2 bell pepper
🥕 1 carrot
🥒 1/2 zucchini
Sauce:
🥜 60 g peanut butter
🍶 20 ml soy sauce
💧 20 ml water
🧄 1 garlic clove, grated
🫚 1 cm ginger, grated
Preparation:
1️⃣🥢 Cut the vegetables into thin strips using a peeler or knife, mix everything together by hand.
2️⃣🍯 Mix all the ingredients for the peanut soy sauce.
3️⃣💧 Dip the first rice paper briefly in water, then place it in a cold pan greased with oil.
4️⃣🥜 Spread 1 tablespoon of peanut soy sauce on the rice paper, cover with vegetables.
5️⃣💧 Dip the second rice paper briefly in water and place it on the vegetables, pressing lightly.
6️⃣🔥 Heat the pan and fry the rice paper pancakes on both sides until golden brown.
7️⃣🍴 Enjoy with soy sauce!
#VeganRecipes🌱#PeanutButterLover🥜#HealthyFood🥗#EasyCooking👩🍳#AsianInspired🇻🇳
@dishes