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

Может ли многопоточность быть запущена на разных ядрах процесса

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

Пример с потоками (одно ядро):

python
import threading

def task():
    print(threading.current_thread().name)

threads = [threading.Thread(target=task) for _ in range(4)]
for t in threads:
    t.start()

Пример с процессами (много ядер):

python
from multiprocessing import Process

def task():
    print("Process running")

procs = [Process(target=task) for _ in range(4)]
for p in procs:
    p.start()

Для I/O-задач потоки эффективны, так как GIL освобождается во время ожидания. Для CPU-задач используйте процессы или асинхронность.

Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

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

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

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