Встречается на собеседованиях • сегодня
Почему асинхронность не подходит для CPU bound задач
Асинхронность эффективна для I/O bound задач (сетевые запросы, работа с файлами), где основное время тратится на ожидание. Для CPU bound задач (тяжелые вычисления) она не подходит, потому что:
- GIL в Python - глобальная блокировка интерпретатора не позволяет эффективно использовать несколько ядер CPU в одном процессе
- Нет выигрыша в производительности - асинхронность не ускоряет вычисления, а лишь эффективно переключает контекст между задачами
- Блокирующие вызовы - долгие вычисления блокируют 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))
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
офферы быстрее!
Попробовать бесплатно
Следующий вопрос
Это единственный вопрос по вашему фильтру
как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы