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

Какие инструменты использовать для работы с CPU-bound задачей

Для CPU-bound задач в Python стоит использовать инструменты, которые позволяют обойти GIL и задействовать многопроцессорность:

  1. Модуль multiprocessing - создает отдельные процессы с собственным GIL:
python
from multiprocessing import Pool

def cpu_intensive_task(x):
    return x * x

if __name__ == '__main__':
    with Pool(4) as p:
        print(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
  1. Concurrent.futures.ProcessPoolExecutor - высокоуровневый интерфейс для процессов:
python
from concurrent.futures import ProcessPoolExecutor

with ProcessPoolExecutor() as executor:
    results = list(executor.map(cpu_intensive_task, range(10)))

Для максимальной производительности также можно рассмотреть интеграцию с C/C++ через ctypes или CFFI.

Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

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

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

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