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

Какие знаешь проблемы с общей памятью у многопроцессорности в Python

В Python многопроцессорность использует отдельные процессы, а не потоки, из-за GIL. Основные проблемы с общей памятью:

  1. Отсутствие разделяемой памяти по умолчанию – каждый процесс имеет свою копию данных. Для обмена данными используются:
    • multiprocessing.Value, multiprocessing.Array (синхронизированные объекты)
    • multiprocessing.Queue, Pipe (межпроцессное взаимодействие)
  1. Сериализация данных – передача сложных объектов требует pickle, что может быть медленным и не поддерживает все типы.

  2. Гонки данных – даже с Value/Array нужны блокировки (multiprocessing.Lock).

Пример:

python
from multiprocessing import Process, Value, Lock

def increment(shared_val, lock):
    with lock:
        shared_val.value += 1

shared = Value('i', 0)
lock = Lock()
procs = [Process(target=increment, args=(shared, lock)) for _ in range(10)]
for p in procs: p.start()
for p in procs: p.join()
print(shared.value)  # 10
  1. Высокие накладные расходы – создание процессов и синхронизация дороже, чем в многопоточности.
Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

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

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

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