Каким образом осуществляется смена контекста при работе с много поточным программированием?
Answer from AI
sobes.tech AI
Смена контекста в многопоточном программировании — это процесс сохранения состояния текущего потока и загрузки состояния другого, чтобы процессор мог переключиться между ними.
В Python при использовании потоков (модуль threading) смена контекста происходит автоматически планировщиком операционной системы и интерпретатором Python. Из-за GIL (Global Interpreter Lock) в CPython одновременно выполняется только один поток, но переключение между ними происходит быстро.
Пример:
import threading
import time
def worker(name):
for i in range(3):
print(f"{name} работает {i}")
time.sleep(1)
thread1 = threading.Thread(target=worker, args=("Поток 1",))
thread2 = threading.Thread(target=worker, args=("Поток 2",))
thread1.start()
thread2.start()
thread1.join()
thread2.join()
Здесь смена контекста происходит при вызове time.sleep() и системных прерываниях, позволяя переключаться между потоками.
В более низкоуровневых языках смена контекста включает сохранение регистров процессора, стека и других данных, но в Python это скрыто.