Что знаешь про потоки в Python
Python
Junior
Без компании
Что знаешь про потоки в Python
Ответы
В Python потоки (threads) используются для выполнения задач параллельно в рамках одного процесса. Они разделяют общее пространство памяти, что упрощает обмен данными, но требует синхронизации из-за проблем с GIL (Global Interpreter Lock).
**Особенности:**
- GIL ограничивает выполнение только одного потока за раз (в CPU-bound задачах).
- Потоки эффективны для I/O-bound задач (сеть, файлы), где есть ожидание.
- Реализованы через модуль `threading`.
**Пример:**
```
import threading
def task():
print("Поток выполняется")
thread = threading.Thread(target=task)
thread.start()
thread.join() # Ожидание завершения
```
**Синхронизация:**
Используйте `Lock`, `RLock`, `Semaphore` для избежания race conditions:
```
lock = threading.Lock()
with lock:
# Критическая секция
shared_data += 1
```
**Альтернативы:**
- Для CPU-bound задач — `multiprocessing`.
- Для асинхронности — `asyncio`.