Python time.sleep vs занятого ожидания ожидания
Я поиграл с функцией time.sleep из стандартной библиотеки python и обнаружил, что она не подходит для задержек менее мс. После тестирования я обнаружил, что ожидание 1 мс составляет 1,1-1,2 мс. Реализация занятого ожидания получила точность с точностью до 1%. Я использовал:
def busy_wait(dt):
current_time = time.time()
while (time.time() < current_time+dt):
pass
и может опуститься до 0,0001 секунды, прежде чем сломать 1% точности.
Основные вопросы, которые у меня есть:
Почему функция сна настолько неточна (возможно, проблема С)? Изменит ли это улучшение процессора с более высокой тактовой частотой?Зачем кому-то спать? Единственное преимущество, которое я вижу, энергосбережение, ограничено встроенными системами, не так ли?Будет ли целесообразным компенсировать неточность сна калибровкой? Вот так:def sleep(dt): sleep(calibration_function(dt))
Кроме того, я прочитал, что сон даже не работает хорошо с долгим временем ожидания:Верхний предел в Python time.sleep ()? Я также где-то читал о том, как сделать цикл с более короткими временными интервалами для повышения точности, но это бесполезно, когда я хочу задержать 0,01 сек.Карл Войтланд упоминает использование nanosleep ctypes, но я чувствую, что это излишне, и что time.sleep должен делать то, что ему нужно.
time.sleep - это сломанная функция Python? Или никто не заботится о точном измерении времени?