В чем разница между threading и многопроцессингом (multiprocessing) в Python

Python Middle Без компании
В чем разница между threading и многопроцессингом (multiprocessing) в Python
Ответы
Основное отличие в том, что threading использует потоки внутри одного процесса, а multiprocessing - отдельные процессы. Ключевые различия: - Потоки делят память процесса, процессы имеют независимую память - В Python из-за GIL потоки не дают выигрыша в CPU-bound задачах - Multiprocessing лучше для CPU-bound задач, threading - для I/O-bound - Процессы требуют больше ресурсов для создания - Обмен данными между процессами сложнее (нужны Pipe, Queue и т.д.) Пример CPU-bound задачи: ``` # threading (неэффективно из-за GIL) import threading def work(): [x**2 for x in range(10_000_000)] threads = [threading.Thread(target=work) for _ in range(4)] for t in threads: t.start() for t in threads: t.join() # multiprocessing (эффективно) from multiprocessing import Process procs = [Process(target=work) for _ in range(4)] for p in procs: p.start() for p in procs: p.join() ```