Три способа выполнить множество задач с 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
Почему самолёты не летают «прямо» в небе? ✈️
📌Если взглянуть на маршрут, особенно на дальнемагистральных рейсах, он почему-то выглядит изогнутым. Например, рейс из Москвы в Лос-Анджелес (если бы таковой был) летит не напрямую на запад, а через север — почти задев полюс.
Но почему так?
Это связано с геометрией планеты.
⏺Земля — шар, и кратчайшее расстояние между двумя точками на сфере — это не прямая линия на карте, а дуга.
🌍 Аналогичный принцип происходит с глобусом: необходимо натянуть нитку между двумя городами — она всегда будет идти дугой. Именно по такому маршруту и строятся авиарейсы.
⏺В Арктике и над Тихим океаном самолёт может даже перепрыгнуть через дату — сегодня вылетел, а прилетел вчера.
Лёгкое небо
#aviation#route
🇧🇬 En Bulgarie, deux personnes ont été tuées et neuf autres blessées dans un accident de la route impliquant un bus ukrainien, rapporte la télévision nationale bulgare.
Le bus touristique s’est arrêté en raison d’un manque de carburant, et lorsque les passagers sont descendus, il est reparti en marche arrière de manière incontrôlée, les percutant. Les faits se sont produits près du poste-frontière de Malko Tarnovo, non loin de la frontière bulgaro-turque.
#accident#victimes#route