> В чем разница синхронности и асинхронности в Python (Python)

Уровень: senior · Роль: backend · Язык: Python · Категория: Технические вопросы

Компании: Стилсофт, TrueEngineering, IPChain, Фабрика решений, aiso.team, praktika.ai, Сбер, Т1, Sunlight, ARX, CyberBird, Медиа Майн

Стек: Python

> Пример ответа

Основное различие между синхронным и асинхронным кодом в Python - в том, как программа ожидает завершения операций ввода-вывода (сеть, диски, базы данных).

Синхронность (синхронный код):
Каждая операция выполняется последовательно. Пока одна задача не завершится, следующая не начнётся. Если происходит блокирующий вызов (например, requests.get() или time.sleep()), весь поток выполнения останавливается. Это просто и предсказуемо, но неэффективно при большом количестве ожиданий.

Пример:

PYTHON
import time
import requests
def fetch(url):
response = requests.get(url)
return response.text
start = time.time()
data1 = fetch('https://example.com')
data2 = fetch('https://example.org')
print(time.time() - start) # ~2 секунды (если каждый запрос ~1 сек)

Асинхронность (асинхронный код):
Использует async/await и event loop (например, asyncio). Вместо блокировки потока программа переключается на другую задачу во время ожидания I/O. Это позволяет выполнять множество операций параллельно в одном потоке, не тратя ресурсы на ожидание.

Пример:

PYTHON
import asyncio
import aiohttp
async def fetch(session, url):
async with session.get(url) as response:
return await response.text()
async def main():
async with aiohttp.ClientSession() as session:
tasks = [fetch(session, 'https://example.com'),
fetch(session, 'https://example.org')]
await asyncio.gather(*tasks)
start = asyncio.get_event_loop().time()
asyncio.run(main())
print(asyncio.get_event_loop().time() - start) # ~1 секунда (запросы выполняются одновременно)

Ключевые различия:

  • Блокировка: синхронный код блокирует поток, асинхронный - нет.
  • Производительность: асинхронность эффективнее для I/O-bound задач (сеть, файлы), синхронность - для CPU-bound (вычисления).
  • Сложность: синхронный код проще писать и отлаживать; асинхронный требует понимания event loop и await.
  • Инструменты: синхронный - requests, time.sleep; асинхронный - aiohttp, asyncio.sleep.

Вывод: выбирайте синхронность для простых скриптов или CPU-нагрузки, асинхронность - для высоконагруженных I/O-приложений (веб-серверы, парсеры, чат-боты).

> Похожие задачи по Python

Что такое Dependency Injection (DI)

Уровень: juniorРоль: backendКатегория: Технические вопросы
Компания: Точка, ProFinansy, ООО Диджитал Сектор Поддержка, Спортлевел, Black Wall Group (BWG), Т1, Московский метрополитен
Стек: Python

В чем разница между select_related и prefetch_related в Django ORM?

Уровень: seniorРоль: backendКатегория: Технические вопросы
Компания: MTS, inpglobal, Кинофлекс, Instories, Sunlight, Культура аналитики, ФедяИСамат
Стек: Python

Какие типы данных существуют в Python

Уровень: seniorРоль: backendКатегория: Технические вопросы
Компания: ProFinansy, ООО Диджитал Сектор Поддержка, Домклик, АО НПФ Будущее, GGSel, IPChain, Фабрика решений, Сбер, Исходный Код, Sunlight, ARX, Московский метрополитен, Angie
Стек: Python

Что такое декоратор в Python и для чего он используется?

Уровень: juniorРоль: backendКатегория: Технические вопросы
Компания: Wildberries, JEDai, MirrorApp, Стилсофт, MTS, ООО Диджитал Сектор Поддержка, Aston, Ubic, Домклик, PositiveTechnologies, TrueEngineering, IPChain, JetLend, Фабрика решений, TradingView, ООО НТЦ Вулкан, praktika.ai, Сбер, Sunlight, mozen, ИВИ, Московский метрополитен
Стек: Python

> Похожие задачи по backend

Что такое Dependency Injection (DI)

Уровень: juniorЯзык: PythonКатегория: Технические вопросы
Компания: Точка, ProFinansy, ООО Диджитал Сектор Поддержка, Спортлевел, Black Wall Group (BWG), Т1, Московский метрополитен
Стек: Python

В чем разница между select_related и prefetch_related в Django ORM?

Уровень: seniorЯзык: PythonКатегория: Технические вопросы
Компания: MTS, inpglobal, Кинофлекс, Instories, Sunlight, Культура аналитики, ФедяИСамат
Стек: Python

Какие типы данных существуют в Python

Уровень: seniorЯзык: PythonКатегория: Технические вопросы
Компания: ProFinansy, ООО Диджитал Сектор Поддержка, Домклик, АО НПФ Будущее, GGSel, IPChain, Фабрика решений, Сбер, Исходный Код, Sunlight, ARX, Московский метрополитен, Angie
Стек: Python

Что такое декоратор в Python и для чего он используется?

Уровень: juniorЯзык: PythonКатегория: Технические вопросы
Компания: Wildberries, JEDai, MirrorApp, Стилсофт, MTS, ООО Диджитал Сектор Поддержка, Aston, Ubic, Домклик, PositiveTechnologies, TrueEngineering, IPChain, JetLend, Фабрика решений, TradingView, ООО НТЦ Вулкан, praktika.ai, Сбер, Sunlight, mozen, ИВИ, Московский метрополитен
Стек: Python

> ГОТОВЫ К СЛЕДУЮЩЕМУ СОБЕСЕДОВАНИЮ?

Запустите тренировочную сессию с ИИ и получите детальную обратную связь, чтобы увереннее проходить реальные интервью