Три способа выполнить множество задач с 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
#DEXE/USDT analysis :
#DEXE is currently in an uptrend on the higher time frame (HTF). The price is in an accumulation phase, consolidating sideways. A breakout from this consolidation is anticipated soon, which would likely continue the bullish rally and test the swing high. We should look for potential pullbacks to establish long entries.
TF : 1W
Entry : $8.260
Target : $18.100
SL : $6.340
#DEXE/USDT analysis :
#DEXE is currently facing resistance from the 200 EMA on the daily time frame. On the 4-hour time frame, it has broken and retested the support zone. The price is now likely to continue its bearish momentum and test new lows.
TF : 4H
Entry : $8.461
Target : $7.953
SL : $8.783