Python Glossary English

все 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Сообщить о неточности