Sobes.tech
Back to questions
Junior — Middle
50

Каким образом осуществляется смена контекста при работе с много поточным программированием?

Companies where asked
КубикТех

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 это скрыто.