Только начал присматриваться к PyQt4 и пока гоняю его на предмет производительности. Простая сцена из отскакивающих от стен линий и пятиугольников. Обновляется через поток.
Код потока выглядит так:
class thread(QtCore.QThread): #поток с нашей отрисовкой
def __init__(self):
QtCore.QThread.__init__(self)
def run(self):
self.running = True
self.pause = False
freq = 1/100.
lastRun = 0. #время последнего сигнала
while self.running:
if self.pause == False:
t = time()
if t - lastRun > freq: #пора обновляться
self.emit(QtCore.SIGNAL('doPaint()'))
lastRun = t
self.msleep(1)
Если же пытаюсь поднять фпс, то freq в пределах вообще на фпс не влияет. Ставильно 60, плюс-минус.
При этом, если цикл немного подравить:
while self.running:
if self.pause == False:
#t = time()
#if t - lastRun > freq: #пора обновляться
self.emit(QtCore.SIGNAL('doPaint()'))
# lastRun = t
self.msleep(1)
Что я делаю не так? Весь мозг уже сломал.
Спасибо.
P.S. есть подозрение, что виноват time(). Если так, то что есть в питоне для точного измерения времения? Ничего не нашел.