> Что такое синхронность, многопоточность и многопроцессорность (Python)

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

Компании: MTS

Стек: Python

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

Синхронность - это модель выполнения, где задачи выполняются последовательно, одна за другой. Каждая операция блокирует поток до своего завершения. В Python это стандартное поведение: код выполняется строка за строкой.

Многопоточность - это выполнение нескольких потоков в рамках одного процесса. Потоки разделяют общую память, что упрощает обмен данными, но требует синхронизации (например, через threading.Lock). В CPython из-за GIL (Global Interpreter Lock) многопоточность эффективна только для I/O-bound задач (сетевые запросы, чтение файлов), так как GIL не позволяет потокам выполняться параллельно на нескольких ядрах.

Многопроцессорность - это запуск нескольких процессов, каждый со своим интерпретатором Python и памятью. Это обходит GIL, позволяя параллельное выполнение на нескольких ядрах CPU, что идеально для CPU-bound задач (вычисления, обработка данных). Обмен данными между процессами сложнее (через multiprocessing.Queue, Pipe или разделяемую память).

Пример для Python:

  • Синхронный код: requests.get(url) блокирует выполнение до ответа.
  • Многопоточность: threading.Thread(target=func) - хорошо для одновременных запросов к API.
  • Многопроцессорность: multiprocessing.Process(target=func) - для параллельного вычисления факториалов больших чисел.

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

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