Какие знаешь методы оптимизации CPU bound задач в Python

«Какие знаешь методы оптимизации CPU bound задач в Python» — вопрос из категории Архитектура, который задают на 10% собеседований Frontend Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Для оптимизации CPU-bound задач в Python можно использовать:

  1. Многопроцессорность (модуль multiprocessing), так как GIL блокирует потоки:
from multiprocessing import Pool

def heavy_computation(x):
    return x * x

with Pool(4) as p:
    result = p.map(heavy_computation, range(10))
  1. Cython - компиляция Python-кода в C для ускорения.

  2. Numba - JIT-компилятор для числовых операций:

from numba import jit

@jit(nopython=True)
def fast_func(x):
    # ускоренный код
    return x * x
  1. Использование C-расширений (ctypes, CFFI).

  2. Оптимизация алгоритмов - выбор более эффективных алгоритмов (O(n) вместо O(n²)).

  3. NumPy - для векторных операций вместо циклов.

Для I/O-bound задач лучше подходят асинхронные подходы (asyncio) или потоки.