Как реализовать это эффективно?
Не знаю, насколько эффективно, но просто :
Звучит как класс с value
член, is_set
член и lock
и condition
. Метод set()
должен
- заблокировать
lock
- и вызвать ошибку, если
is_set
уже имеет значение true, или же is_set = True
- установить значение
condition.notifyAll()
Метод get()
должен заблокировать блокировку и затем l oop в ожидании условия переменная, пока is_set
не станет True, и, наконец, вернет значение.
Если есть более эффективный способ сделать это с чистым кодом Python, это за пределами моего понимания.