Встречается на собеседованиях • сегодня
Почему для вычислительных операций в 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()
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
офферы быстрее!
Попробовать бесплатно
Следующий вопрос
Это единственный вопрос по вашему фильтру
как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы