TGViewer
Python академия Python академия @pythonofff · 7.14K subscribers
Post #3497 1.07K
🚀 Синхронность vs Асинхронность: Ускоряем код в 10 раз

Представьте, что вы стоите в очереди в Макдональдс.

🐢 Синхронный подход (как requests):
Кассир принимает ваш заказ, уходит на кухню, ждет, пока пожарится картошка, наливает колу, отдает заказ вам и только потом обращается к следующему человеку в очереди. Медленно? Ужасно медленно!

⚡️ Асинхронный подход (как aiohttp):
Кассир принимает заказ, кричит на кухню "Свободная касса!" и сразу берет заказ у следующего, пока ваш готовится. Работа идет параллельно.

В Python для этого используется библиотека aiohttp и ключевые слова async / await.

Сравним на практике:
Допустим, нам нужно скачать 10 страниц.


import asyncio
import aiohttp
import time

# Функция для одного запроса
async def fetch_page(session, url):
async with session.get(url) as response:
return response.status

async def main():
urls = ["https://google.com" for _ in range(10)] # 10 запросов

async with aiohttp.ClientSession() as session:
tasks = []
for url in urls:
# Создаем задачи, но еще не запускаем их ожидание
tasks.append(fetch_page(session, url))

# Запускаем все задачи одновременно!
await asyncio.gather(*tasks)

start = time.time()
# Запуск асинхронного цикла
asyncio.run(main())
print(f"Время выполнения: {time.time() - start:.2f} сек")



Результат:
Если requests будет делать это ~10 секунд (по 1 сек на запрос), то aiohttp справится за ~1.2 секунды. Он просто отправит все 10 запросов разом и будет ждать ответы.

🛠 Установка:
pip install aiohttp

⚠️ Важно: Не используйте это для атак на сайты (DDoS). Сервер может забанить вас за слишком большое количество запросов в секунду.

Сохраняй, пригодится для парсинга больших объемов данных! 🔥

📲 Мы в MAX

Подписывайтесь на канал 👉@pythonofff
  • 👍 3
  • 😱 1
  • 🥴 1
More from @pythonofff
  1. Sep 24, 2026Анонимные функции Часто функции нужны только один раз, причем короткие. И избыточно создав…
  2. Sep 23, 2026Бесконечные списки Мы уже рассказывали про важность копирования списков. Но именно из-за т…
  3. Sep 21, 2026Заглушки Для создания пустых функций и классов есть сразу два способа соответствующих прав…
  4. Sep 20, 2026Параметры функции *args, **kwargs Думаю, многие хоть раз видели такую запись, сейчас мы уз…
  5. Sep 18, 2026В одну строчку Python гибкий язык и позволяет многое сделать в одну строчку. К примеру, ма…
  6. Sep 16, 2026Распаковка Неудобно каждый раз для вывода объединять строки через join() или тем более как…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →