Загружаем изображение…

🚀 Синхронность 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). Сервер может забанить вас за слишком большое количество запросов в секунду.

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

Подписывайтесь на канал 👉 @python_of
Просмотры: 7 635
Открыть в MAX Сообщить о неточности

Репосты публикации

Публикация канала

Сообщить о неточности

Опишите, что нужно исправить. Если есть источник, добавьте ссылку.

Вы покидаете datool.ru

Ссылка ведёт на внешний сайт. datool.ru не отвечает за его содержимое — проверьте адрес, прежде чем вводить пароли или платёжные данные.

Переход через 10 с

Перейти