все Python 3threadingпонятие
threading.Event
синхронизация
Механизм сигнализации между потоками. Один поток устанавливает флаг (set()), другие ждут его (wait()).
Синтаксис
e = threading.Event()
e.set() / e.clear() / e.wait() / e.is_set()
Заменяет busy-wait по булеву флагу: wait() блокирует поток эффективно, без прокрутки цикла и сжигания CPU. Флаг уровневый — после set() он остаётся взведён, и опоздавшие wait() проходят мгновенно, пока кто-нибудь не вызовет clear(). При этом wait(timeout) возвращает текущее значение флага (True/False), так что таймаут отличим от настоящего сигнала.
Примеры
import threading
ready = threading.Event()
import threading
ready = threading.Event()
def producer():
print('данные готовы')
ready.set()
def consumer():
ready.wait() # блокируется до set()
print('получил данные')
t1 = threading.Thread(target=producer)
t2 = threading.Thread(target=consumer)
t2.start(); t1.start()
t1.join(); t2.join()
См. также
Открыть в полном глоссарииdocs.python.orgСообщить о неточности