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