Три способа выполнить множество задач с 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
#ADX/USDT analysis :
#ADX is currently in a downtrend and trading below its 200 exponential moving average (EMA). The price is encountering resistance from the 200 EMA and a resistance zone. It is anticipated that the price will decline from this point and test lower levels.
TF : 2h
Entry : $0.1090
Target : $0.0963
SL : $0.1173
#ADX/USDT analysis :
#ADX is currently in an uptrend, making new highs while trading above the 200 EMA and the support zone. The price is anticipated to resume its bullish momentum and test the previous swing high. Look for a pullback for a long entry.
TF : 4H
Entry : $0.1659
Target : $0.1934
SL : $0.1550
#ADX profit projections if remains in bull zone
Strong support Layer
220-225
Above this value #ADX will remain in bull Zone and will go as projected 🚀🚀