В чем отличие потоков от процессов
Python
Junior
Без компании
В чем отличие потоков от процессов
Ответы
Потоки (threads) и процессы (processes) — это способы выполнения кода параллельно, но с ключевыми различиями:
- **Память**: Потоки разделяют память процесса, в котором они созданы, что упрощает обмен данными, но требует синхронизации (например, через `threading.Lock`). Процессы имеют независимую память, обмен данными сложнее (используют `multiprocessing.Queue`, `Pipe` или shared memory).
- **GIL**: В Python потоки ограничены Global Interpreter Lock (GIL), что мешает настоящему параллелизму для CPU-bound задач. Процессы обходят GIL, так как у каждого свой интерпретатор.
- **Создание**: Потоки легче (меньше накладных расходов), процессы тяжелее, но изолированы.
Пример с потоками:
```
import threading
def worker():
print("Thread working")
t = threading.Thread(target=worker)
t.start()
t.join()
```
Пример с процессами:
```
from multiprocessing import Process
def worker():
print("Process working")
p = Process(target=worker)
p.start()
p.join()
```
Выбор зависит от задачи: потоки для I/O-bound, процессы для CPU-bound.