Существует ли эффективная альтернатива Condition.wait() с надежным временем ожидания?

#python #python-3.x #python-multithreading #wait

Вопрос:

Я столкнулся с проблемой с реализацией Python 3.8 threading.Event.wait(timeout) (которая используется внутри threading.Condition.wait() ). Проблема описана здесь как ошибка. Если я правильно понимаю, поскольку базовая блокировка использует немонотонное время и, следовательно, может случиться так, что тайм-аут будет короче/длиннее, чем указано.

Есть ли какая-то альтернатива Condition.wait() , которая не пострадает от изменения времени, когда используется тайм-аут и которая достаточно эффективна (процессор не перегружен, как при простом напряженном ожидании)?

Комментарии:

1. Что вы ищете? Утверждение «Есть ли какая-то альтернатива этому, которая не страдала бы от этого и была бы более эффективной, чем занятое ожидание? Какое-то полупустое ожидание?» не помогает в попытке определить, чего вы хотите

2. @itprorh66 Вы правы, вопрос был плохо написан. Я попытался переписать его, чтобы быть более ясным и конкретным.

3. Итак, поскольку conditon.wait() команда не обеспечивает точную временную задержку, а просто приближение, вы ищете средство для реализации функциональности threading>Event.wailt(timeout) , которая приводит к точной/повторяемой временной задержке. Правильно ли это?

4. На самом деле, мне не обязательно, чтобы это было точно (моя цель-точность — 10 мс), однако мне нужна надежность в этом диапазоне. Для threading.Event.wait(timeout) , ошибка не ограничена (см. Пример файла здесь , где вы в основном указываете ошибку).