но как-то ведь надо возвращаться к ожиданию
ну он сделал принт, выставил event в False, и если бы это было не в цикле (в каком угодно виде) то после этого главный поток завершился бы, разве нет?
Смотри, ты сделал event.clear() в этот момент второй поток проставляет опять event.set() и твой цикл вываливается по условию while not event.is_set()
т.е. правильный вариант такой: while True: is_set = event.wait() if is_set: if len(result) >= 5: with lock: print(result) result.clear() event.clear() ?
Ага, почти, только is_set и условие if is_set лишние
точно, он дальше ведь не пойдет в противном случае спасибо, было интересно; и последний наверное вопрос — "можно проще" имеется в виду что event и lock вдвоем не нужны и один может выступать за обоих?
теперь можешь прочитать про thread.Condition
из примера брал, не подумал. там видимо is_set имело смысл (возможно из-за наличия таймаута), тут конечно достаточно просто event.wait().. про Condition тогда в след раз, хотя конечно интересно какой самый простой вариант кода здесь
А разве в питоне нет мьютексов как в плюсах?
threading.Lock по-твоему это что?
А я не знал, просто спросил
Обсуждают сегодня