Какие есть особенности у процессов и потоков в Python
Python
Junior
Без компании
Какие есть особенности у процессов и потоков в Python
Ответы
В Python процессы и потоки имеют ключевые различия из-за GIL (Global Interpreter Lock):
**Потоки:**
- Используют общую память (легко обмениваются данными)
- GIL ограничивает выполнение только одного потока за раз (CPU-bound задачи не ускоряются)
- Подходят для I/O-bound задач (ожидание сети/диска)
- Меньшие накладные расходы на создание
```
import threading
def worker():
print("Thread working")
t = threading.Thread(target=worker)
t.start()
```
**Процессы:**
- Полностью изолированы (требуют спец. механизмов для обмена данными)
- Не ограничены GIL (параллельное выполнение CPU-bound задач)
- Большие накладные расходы на создание
- Требуют больше памяти
```
from multiprocessing import Process
def worker():
print("Process working")
p = Process(target=worker)
p.start()
```
Для CPU-bound задач лучше multiprocessing, для I/O-bound - threading. Для современных задач часто используют concurrent.futures или asyncio.