Какие знаешь параметры переключения между потоками
Python
Middle
Без компании
Какие знаешь параметры переключения между потоками
Ответы
В Python параметры переключения между потоками (thread switching) контролируются GIL (Global Interpreter Lock) и системным планировщиком. Основные моменты:
- **GIL** – только один поток исполняет байт-код Python в любой момент времени. Переключение происходит:
- При **I/O операциях** (чтение файлов, сетевые запросы)
- По истечении **тиков** (ticks) – условных инструкций (по умолчанию 100 тиков, но зависит от версии Python и `sys.setcheckinterval()` в Python 2 / `sys.setswitchinterval()` в Python 3).
- **`sys.setswitchinterval(sec)`** – задает интервал переключения между потоками (по умолчанию 5 мс в Python 3). Чем меньше интервал, тем чаще переключения, но выше накладные расходы.
Пример:
```
import sys
import threading
sys.setswitchinterval(0.001) # Установка интервала в 1 мс
def worker():
print("Поток выполняется")
threads = [threading.Thread(target=worker) for _ in range(5)]
for t in threads:
t.start()
for t in threads:
t.join()
```