Какие знаешь виды параллелизма в Python
Python
Middle
Без компании
Какие знаешь виды параллелизма в Python
Ответы
В Python есть несколько способов достижения параллелизма:
- **Потоки (threading)**
Подходит для I/O-bound задач (сетевые запросы, чтение файлов).
```
import threading
def task():
print("Thread running")
thread = threading.Thread(target=task)
thread.start()
```
- **Процессы (multiprocessing)**
Для CPU-bound задач (вычисления). Полная изоляция памяти.
```
from multiprocessing import Process
def task():
print("Process running")
p = Process(target=task)
p.start()
```
- **Асинхронность (asyncio)**
Однопоточный параллелизм через корутины. Для I/O-bound задач.
```
import asyncio
async def task():
print("Coroutine running")
asyncio.run(task())
```
- **GIL (Global Interpreter Lock)**
Ограничивает выполнение Python-кода одним потоком, но не влияет на процессы.
Выбор зависит от типа задачи:
- CPU-bound → multiprocessing
- I/O-bound → threading или asyncio