Как переключается контекст в multithreading (многопоточности)

Python Middle Без компании
Как переключается контекст в multithreading (многопоточности)
Ответы
В Python переключение контекста между потоками управляется GIL (Global Interpreter Lock). GIL позволяет выполняться только одному потоку за раз, даже на многоядерных системах. Переключение происходит: - **По истечению кванта времени** (обычно 5 мс) - **При операциях I/O** (чтение/запись, сетевые запросы) - **При явном вызове `time.sleep()`** Пример: ``` import threading def worker(): print("Поток начал работу") # Здесь может произойти переключение контекста print("Поток завершил работу") t1 = threading.Thread(target=worker) t2 = threading.Thread(target=worker) t1.start() t2.start() ``` Из-за GIL настоящий параллелизм достигается только в мультипроцессинге (`multiprocessing`). Для CPU-bound задач лучше использовать процессы, для I/O-bound — потоки.