Какие варианты многозадачности есть в Python
Python
Senior
СБЕР Роботы
Какие варианты многозадачности есть в 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")
process = Process(target=task)
process.start()
```
- **Асинхронность (asyncio)** – для эффективного выполнения I/O-bound задач в одном потоке.
```
import asyncio
async def task():
print("Async task")
asyncio.run(task())
```
- **GIL (Global Interpreter Lock)** – ограничивает потоки в CPython, поэтому для CPU-bound задач лучше использовать процессы.
Выбор зависит от типа задачи:
- I/O-bound → `threading` или `asyncio`
- CPU-bound → `multiprocessing`