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

Как решается CPU bound задача

Для решения CPU-bound задач в Python можно использовать несколько подходов:

  1. Многопроцессорность (multiprocessing) - создание отдельных процессов для параллельного выполнения:
python
from multiprocessing import Pool

def cpu_intensive_task(x):
    return x * x

if __name__ == '__main__':
    with Pool(4) as p:
        results = p.map(cpu_intensive_task, range(10))
  1. Cython - компиляция Python-кода в C для ускорения:
python
# Файл cython_module.pyx
def cython_func(int n):
    cdef int result = 0
    for i in range(n):
        result += i * i
    return result
  1. Numba - JIT-компиляция с использованием декораторов:
python
from numba import jit

@jit(nopython=True)
def numba_func(n):
    result = 0
    for i in range(n):
        result += i * i
    return result

Ключевые моменты:

  • GIL в Python мешает эффективному использованию потоков для CPU-bound задач
  • Процессы имеют отдельные области памяти и GIL для каждого
  • Для математических операций эффективны специализированные библиотеки (NumPy, Numba)
  • В сложных случаях стоит рассмотреть вынос CPU-bound частей в C/C++ расширения
Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

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

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

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