Три способа выполнить множество задач с 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
🇷🇺🚨🚨🚨🚨НРТК «Курьер» осуществляет буксировку 122-мм гаубицы Д-30 массой свыше 3 тонн.
Не мог удержаться и не наложить Звук!
Фанаты Пушного точно заценят!!! 😎
Оригиналы видео принадлежат их авторам
#artillery#drone#humor#pushnoy
🇷🇺 RUSSIA PRODUCES ARTILLERY SHELLS ABOUT THREE TIMES FASTER THAN UKRAINE'S WESTERN ALLIES AND 75% CHEAPER.
#SkyNews writes about this, citing a published analysis by the consulting company Bain & Company.
The publication notes that these figures highlight the serious problem faced by the #Ukrainian Armed Forces as they rely on ammunition supplies from the #USA and #Europe.
The US, UK and other European allies are trying to ramp up production at their factories, but their ability to produce #artillery shells still lags behind #Russia, despite a combined economic power that dwarfs Russia's.
Sky News cites a comment from one of the Ukrainian Armed Forces’ artillerymen, who said that for every shell fired by Ukraine, the Russians fire five.
According to Bain&Company research, Russian artillery shell production for 2024 will be approximately 4.5 million this year, compared with a combined production of about 1.3 million shells in European countries and the United States.