Я написал аналогичный код и получил аналогичные результаты,
for i in range(10):
then = time.time()
time.sleep(0.01)
now = time.time()
# print('+---------------------------+')
print(now - then)
# print(f"rounded: {round(now - then, 2)}")
# print('+---------------------------+')
Сначала я подозревал, что причина в том, что использование математики с плавающей запятой проверьте это .
Но потом я получил этот вывод
Выходы
0.01080012321472168
0.01015472412109375
0.010109186172485352
0.022491931915283203 # THIS ONE IS REALLY WEIRD
0.01163029670715332
0.010137796401977539
0.010179996490478516
0.01008749008178711
0.010132551193237305
0.010088443756103516
Даже если вы предполагали, что при расчете разницы есть предел погрешности, он не должно быть так много
+---------------------------+
0.01080012321472168
rounded: 0.01
+---------------------------+
+---------------------------+
0.01015472412109375
rounded: 0.01
+---------------------------+
+---------------------------+
0.010109186172485352
rounded: 0.01
+---------------------------+
+---------------------------+
0.022491931915283203
rounded: 0.02
+---------------------------+
+---------------------------+
0.01163029670715332
rounded: 0.01
+---------------------------+
+---------------------------+
0.010137796401977539
rounded: 0.01
+---------------------------+
+---------------------------+
0.010179996490478516
rounded: 0.01
+---------------------------+
+---------------------------+
0.01008749008178711
rounded: 0.01
+---------------------------+
+---------------------------+
0.010132551193237305
rounded: 0.01
+---------------------------+
+---------------------------+
0.010088443756103516
rounded: 0.01
+---------------------------+
Но после прочтения официальной документации python метода time.sleep
эти результаты имеют смысл проверьте здесь , я цитирую документацию
время приостановки может быть дольше, чем запрошено на произвольную сумму из-за планирования других действий в системе
Так что в качестве обоснованного предположения о проблеме здесь,
Это вызвано несколькими факторами
- Планирование потоков операционной системы
- Время выполнения до и после сна
- И, вычисление с плавающей точкой .
Я надеюсь, что это помогло.