Python time.sleep vs dokładność oczekiwania na ruch

Bawiłem się z funkcją time.sleep ze standardowej biblioteki pythona i stwierdziłem, że jest ona nieodpowiednia dla opóźnień sub-ms. Z testów dowiedziałem się, że faktycznie czeka 1,1-1,2 ms na 1 ms. Wdrożenie oczekiwania zajęło uzyskanie dokładności do 1%. Użyłem:

def busy_wait(dt):   
    current_time = time.time()
    while (time.time() < current_time+dt):
        pass

i może spaść do 0,0001 sekundy przed zerwaniem dokładności 1%.

Główne pytania, które mam, to:

Dlaczego funkcja uśpienia jest tak niedokładna (prawdopodobnie problem z C)? Czy otrzymanie lepszego procesora z wyższą prędkością zegara zmieni to?Dlaczego ktoś miałby korzystać ze snu? Jedyna zaleta, jaką widzę, oszczędzanie energii, ogranicza się do systemów wbudowanych, nie?Czy można zrekompensować niedokładność snu za pomocą kalibracji? Tak jak:
def sleep(dt):
    sleep(calibration_function(dt))

Na marginesie przeczytałem, że sen nie działa nawet dobrze przy długich czasach oczekiwania:Górny limit w Python time.sleep ()? Czytam również gdzieś na SO, tworząc pętlę krótszych odstępów czasu, aby zwiększyć precyzję, ale jest to bezużyteczne, gdy chcę opóźnić 0,01 sek.Karl Voigtland wspomina o nanosleepie ctypes, ale czuję, że jest to przesada i że time.sleep powinien robić zamierzone zachowanie.

time.sleep to zepsuta funkcja Pythona? A może nikt nie dba o dokładny pomiar czasu?

questionAnswers(2)

yourAnswerToTheQuestion