Встречается на 1% собеседований по Python
Какие инструменты использовать для работы с 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
интервью вопросы и ответы