Back to questions
Junior — Middle
68
Как вы выбираете условия для переключения исполнения между потоками?
Answer from AI
sobes.tech AI
В Python переключение исполнения между потоками происходит за счёт планировщика потоков операционной системы и механизма GIL (Global Interpreter Lock). Условия для переключения обычно выбираются на уровне блокировок, ожиданий ввода-вывода или явных вызовов, например, time.sleep(), threading.Event().wait(), или при освобождении GIL.
Чтобы управлять переключением, используют синхронизационные примитивы из модуля threading:
- Lock / RLock — блокируют доступ к ресурсу, переключение происходит, когда поток ждёт освобождения блокировки.
- Event — поток ждёт события, переключение происходит при его установке.
- Condition — позволяет потокам ждать определённого условия.
Пример использования Event для переключения исполнения:
import threading
import time
event = threading.Event()
def worker():
print('Ждём события...')
event.wait() # переключение, пока событие не установлено
print('Событие произошло! Продолжаем работу.')
thread = threading.Thread(target=worker)
thread.start()
time.sleep(2)
print('Устанавливаем событие')
event.set() # переключение к потоку worker
thread.join()
Таким образом, условия для переключения выбираются исходя из необходимости синхронизации и ожидания определённых событий или ресурсов.