Три способа выполнить множество задач с 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
#ERN/USDT analysis :
#ERN is currently in an uptrend, trading above the 200 Exponential Moving Average (EMA). The price has recently bounced back and broken out above the trendline, suggesting a potential continuation of the uptrend. The price is anticipated to move upside and test the swing high level.
TF : 30min
Entry : $1.704
Target : $1.992
SL : $1.620
#ERN/USDT analysis :
#ERN is currently in a bearish trend, characterized by a series of lower lows (LLs) and lower highs (LHs) while adhering to the trendline. The price is anticipated to continue this direction, testing lower levels in the near future.
TF : 1D
Entry : $2.230
Target : $1.610
SL : $2.608
#ERN/USDT analysis :
#ERN has broken out above the 200 EMA and is currently consolidating above it. The price is expected to sustain its bullish momentum and is likely to continue its upward trajectory.
TF : 4h
Entry : $2.277
Target : $2.554
SL : $2.088