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

Почему для вычислительных операций в Python не подходит многопоточность

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

Для вычислительных операций лучше использовать:

  • Мультипроцессинг (через multiprocessing), так как каждый процесс имеет свой GIL.
  • Асинхронность (через asyncio) для I/O-bound задач.
  • C-расширения (например, numpy, numba), которые обходят GIL.

Пример:

python
import threading
import multiprocessing

def compute():
    sum(range(10**6))  # CPU-bound задача

# Неэффективно (GIL мешает):
threads = [threading.Thread(target=compute) for _ in range(4)]
for t in threads: t.start()
for t in threads: t.join()

# Лучше использовать процессы:
processes = [multiprocessing.Process(target=compute) for _ in range(4)]
for p in processes: p.start()
for p in processes: p.join()
Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

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

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

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