Если вы хотите измерить точность, которую вы можете получить с помощью time.clock()
и time.sleep()
, используйте что-нибудь настолько простое, насколько это возможно, например:
import time
fps = 5
time_delta = 1./fps
while True:
t0 = time.clock()
time.sleep(time_delta)
t1 = time.clock()
print 1. / (t1 - t0)
Какая у вас ОС и каков результат этого простогоmesure?
Если речь идет об очистке вашего кода, я бы выделил более четко: оценка FPS , обработка и спящий вызов .Вот пример (отображаемая частота цикла 0 должна игнорироваться).
import time
import random
from itertools import count
fps = 5
loop_delta = 1./fps
current_time = target_time = time.clock()
for i in count():
#### loop frequency evaluation
previous_time, current_time = current_time, time.clock()
time_delta = current_time - previous_time
print 'loop #%d frequency: %s' % (i, 1. / time_delta)
#### processing
# processing example that sleeps a random time between 0 and loop_delta/2.
time.sleep(random.uniform(0, loop_delta / 2.))
#### sleep management
target_time += loop_delta
sleep_time = target_time - time.clock()
if sleep_time > 0:
time.sleep(sleep_time)
else:
print 'took too long'
Кроме того, вы, вероятно, хотите time.time()
вместо time.clock()
.См. time.clock () и time.time () - точность ответ.