Я обнаружил определенное несоответствие в скорости Pyglet: pyglet.clock.schedule и pyglet.clock.schedule_interval (с аргументом интервала ниже некоторого значения), вызываем функции.
Кажется, что обе команды показывают некоторый общий порог интервала, который они могут вызывать функцией. Это может быть связано с ограничениями производительности оборудования, если пороговая скорость не была низкой - макс. около 30 вызовов функции в секунду.
Код теста и результаты можно увидеть ниже:
import pyglet
from time import time
window = pyglet.window.Window()
last_update = time()
def update(dt):
global last_update
print("dt: ", dt)
print('Measured dt: ', time()-last_update)
last_update = time()
@window.event
def on_draw():
dt = pyglet.clock.tick()
print('Last clock tick: ', dt, "\n")
pyglet.clock.schedule(update)
pyglet.app.run()
Результат выборки:
dt: 0.030516604423768356
Measured dt: 0.03125262260437012
dt: 0.0007512663764779326
Measured dt: 0.0
Last clock tick: 0.0007512663764779326
Несмотря на то, что dt = pyglet.clock.tick()
побуждает вызвать функцию update(dt)
, значение dt которой соответствует ожидаемому возвращаемому значению clock.tick()
, первый вызов почти всегда возвращает одно и то же фиксированное значение dt, указывая максимальная частота, которую интервальные функции Пиглета вызывают функцию обратного вызова, составляет примерно 30 - 32 раза в секунду.
Я не уверен, что может повлиять на такую низкую частоту, но я думаю, что такая производительность может быть следствием какой-то неисправности. Доказательством этого является, по крайней мере, использование более высоких частот (например, 120 FPS) среди примерных программ издателей.
В чем может быть причина того, что он работает так медленно, и можно ли каким-то образом фиксировать интервальные функции pyglet для обновления функций обратного вызова с соответствующей заданной частотой, не ограниченной скромным ~ 30 в секунду? Заранее спасибо за помощь.
PS clock.schedule_interval
можно манипулировать, только если его интервал больше 1/30.
PPS Наличие методов печати не влияет на пороговую скорость функций интервала.