#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)
, ошибка не ограничена (см. Пример файла здесь , где вы в основном указываете ошибку).