Skip to content

Instantly share code, notes, and snippets.

@MuhammadQuran17
Created March 27, 2026 07:14
Show Gist options
  • Select an option

  • Save MuhammadQuran17/27df277fe349745fded0757c8f417b93 to your computer and use it in GitHub Desktop.

Select an option

Save MuhammadQuran17/27df277fe349745fded0757c8f417b93 to your computer and use it in GitHub Desktop.
MultiProcessing & MultiThreading

Ни один не “лучше” всегда. Multithreading и multiprocessing решают разные задачи. Выбор зависит от CPU-нагрузки, работы с памятью и архитектуры программы.

Разберём системно.


1. Главное различие

Multithreading Multiprocessing
Память общая отдельная
Скорость общения очень быстро медленнее
Изоляция слабая сильная
Crash может уронить процесс изолирован
Создание дешёвое дорогое

2. Когда лучше multithreading

Multithreading хорош, когда задачи:

  • много ждут I/O
  • мало используют CPU

Например:

  • сетевые запросы
  • загрузка файлов
  • ожидание базы данных
  • ожидание API

Пример:

download 1000 urls

Потоки могут параллельно ждать ответы.

Типичные примеры:

  • web servers
  • network programs
  • GUI программы

Многие серверы используют threads + event loop.


3. Когда лучше multiprocessing

Multiprocessing лучше для CPU-тяжёлых задач.

Например:

  • машинное обучение
  • обработка изображений
  • видео
  • криптография
  • научные расчёты

Почему?

Каждый процесс может использовать отдельное CPU ядро.

Core1 → Process1
Core2 → Process2
Core3 → Process3

4. Почему вообще придумали multithreading

Главная причина — shared memory.

Threads видят одну и ту же память.

Пример:

shared cache
shared objects
shared state

Не нужно сериализовать данные.

В multiprocessing нужно:

IPC
pipes
queues
serialization

Это медленнее.


5. Почему многие серверы используют процессы

Историческая причина — безопасность и стабильность.

Если поток падает:

segmentation fault

он может убить весь процесс.

Если падает процесс:

worker died

его можно перезапустить.

Поэтому:

  • nginx → процессы
  • php-fpm → процессы
  • gunicorn → процессы

6. Пример из реальной жизни

PHP-FPM

master
 ├ worker
 ├ worker
 ├ worker

Каждый worker — процесс.

Это multiprocessing.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment