Встречается на собеседованиях • сегодня

Почему асинхронность не подходит для CPU bound задач

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

  1. GIL в Python - глобальная блокировка интерпретатора не позволяет эффективно использовать несколько ядер CPU в одном процессе
  2. Нет выигрыша в производительности - асинхронность не ускоряет вычисления, а лишь эффективно переключает контекст между задачами
  3. Блокирующие вызовы - долгие вычисления блокируют event loop

Для CPU bound задач лучше использовать:

  • Мультипроцессинг (multiprocessing)
  • Вычисления на других языках (через Cython, Rust)
  • Распределенные системы

Пример:

python
# Плохо для CPU bound
async def calculate():
    return sum(i*i for i in range(10**6))  # Блокирует event loop

# Лучше использовать
from multiprocessing import Pool

def calculate_parallel():
    with Pool() as p:
        return p.map(lambda x: x*x, range(10**6))
Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

Следующий вопрос

Это единственный вопрос по вашему фильтру

как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы