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

В чем разница между модулями multiprocessing (многопроцессорностью) и threading (поточность)

Основное отличие в том, что multiprocessing использует отдельные процессы с собственным интерпретатором Python и памятью, а threading - потоки в рамках одного процесса, разделяющие память.

Ключевые различия:

  • GIL: Потоки подвержены Global Interpreter Lock (GIL), что ограничивает параллелизм для CPU-bound задач. Процессы обходят GIL.
  • Память: Процессы изолированы, потоки разделяют память (нужны механизмы синхронизации).
  • Затраты: Создание процессов дороже, чем потоков.

Пример CPU-bound задачи (лучше multiprocessing):

python
from multiprocessing import Pool

def square(x):
    return x * x

with Pool(4) as p:
    print(p.map(square, range(10)))

Пример I/O-bound задачи (подойдут потоки):

python
from threading import Thread
import requests

def fetch(url):
    response = requests.get(url)
    print(response.status_code)

threads = [Thread(target=fetch, args=("https://example.com",)) for _ in range(5)]
for t in threads: t.start()
for t in threads: t.join()
Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

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

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

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