Встречается на собеседованиях • сегодня
Какие инструменты использовать для работы с CPU-bound задачей
Для CPU-bound задач в Python стоит использовать инструменты, которые позволяют обойти GIL и задействовать многопроцессорность:
- Модуль
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)))- 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- 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- 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.

Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
офферы быстрее!
Попробовать бесплатно
Следующий вопрос
Это единственный вопрос по вашему фильтру
как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы