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

Насколько многопоточность подходит под CPU bound задачи в Python

В Python многопоточность плохо подходит для CPU-bound задач из-за Global Interpreter Lock (GIL). GIL позволяет выполняться только одному потоку за раз, даже на многоядерных системах. Это делает многопоточность неэффективной для задач, требующих интенсивных вычислений.

Для CPU-bound задач лучше использовать:

  • Многопроцессорность (multiprocessing), так как каждый процесс имеет свой GIL
  • Cython или другие компилируемые расширения
  • Асинхронность (если задача не чисто CPU-bound)

Пример сравнения:

python
import threading
import multiprocessing
import time

def cpu_task(n):
    while n > 0:
        n -= 1

# Многопоточность (медленно из-за GIL)
start = time.time()
threads = [threading.Thread(target=cpu_task, args=(10**7,)) for _ in range(4)]
for t in threads: t.start()
for t in threads: t.join()
print(f"Threading: {time.time() - start:.2f}s")

# Многопроцессорность (быстрее)
start = time.time()
procs = [multiprocessing.Process(target=cpu_task, args=(10**7,)) for _ in range(4)]
for p in procs: p.start()
for p in procs: p.join()
print(f"Multiprocessing: {time.time() - start:.2f}s")
Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

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

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

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