Hardmultiprocessing
Что такое multiprocessing?
1Постановка
Разберём, что от вас хотят в этом вопросе и как к нему подступиться на собеседовании.
2Решение
multiprocessing — параллелизм через процессы, обход GIL. Каждый процесс — отдельный Python interpreter с собственным GIL, memory. Настоящий параллелизм для CPU-bound.
from multiprocessing import Pool
def square(x):
return x * x
if __name__ == '__main__':
with Pool(4) as pool:
results = pool.map(square, range(100)) # блокирующий
# map_async, apply, apply_async, starmap, imap_unordered- Communication:
Queue,Pipe,Value/Array(shared memory),Manager(proxy для dict/list); - Synchronization:
Lock,RLock,Semaphore,Event,Condition; - spawn (Windows, +Linux с 3.14) — перезапуск Python, import-time code выполняется; fork (Linux по умолчанию) — быстрее, но проблемы с threads/locks;
mp.get_context('spawn')— явно;SharedMemory(3.8) — эффективный shared memory без pickle overhead;- Стоимость выше, чем threads (запуск, IPC pickle).
3Как отвечать
- Сначала уточните условия и ограничения, покажите аналитическое мышление.
- Рассуждайте вслух — интервьюеру важен ход мысли, а не только финальный ответ.
- Оцените сложность по времени и памяти (Big-O), если это алгоритмический вопрос.
💡
На реальном собеседовании Alffert подскажет развёрнутый ответ в реальном времени.