Процесс — это независимая, изолированная единица исполнения программы с собственным адресным пространством, ресурсами (файловые дескрипторы, память). Создание и переключение между процессами затратнее.
Поток (или нить) — это более легкая единица исполнения внутри одного процесса. Потоки разделяют одно адресное пространство и ресурсы процесса. Создание и переключение между потоками дешевле.
| Характеристика | Процесс | Поток |
|---|---|---|
| Адресное пространство | Независимое | Общее |
| Изоляция | Сильная | Слабая (в рамках процесса) |
| Создание/Уничтожение | Затратное | Дешевое |
| Переключение контекста | Затратное | Дешевое |
| Обмен данными | Через IPC (Inter-Process Communication) | Легко (общая память), требует синхронизации |
| Отказоустойчивость | Падение одного не влияет на другие | Падение одного может затронуть весь процесс |
| Планирование | Операционной системой | Операционной системой (или планировщиком потоков) |
Пример создания процесса в Python:
python
Пример создания потока в Python:
python